vs2010自带C# 4.0 示例_语言示例_第一部分
1.命名参数和可选参数
您可以创建自己的支持命名参数和可选参数的调用。 请看以下示例:
public void M(int x, int y = 5, int z = 7) { }
在此方法中,为参数 y 和 z 分配了默认值。 对此方法的调用如下所示:
M(1, 2, 3); // M 的普通调用
M(1, 2); // 省略 z,等效于 M(1, 2, 7)
M(1); // 同时省略 y 和 z,等效于 M(1, 5, 7)
M(1, z: 3); // 通过名称传递 z
M(x: 1, z: 3); // 通过名称同时传递 x 和 z
M(z: 3, x: 1); // 反转实参的顺序
2.Office示例
功能写入Excel,复制到Word。先看运行效果:
a:首先添加对office的word与excel的引用。
为了调用方便,使用using关键字。
启动word程序,默认是不可见的。
这里关键是需要掌握委托的使用方式,lambda方式的匿名委托。
对于Excel特别要注意如果写数据之前,要进行对应的行列定位。(写数据之前,光标先定位一样)。
调用对应单元格的Select()方法。如果不断写数据,可用ActiveCell.Offset方法偏移定位。
具体参考代码:
View Code
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using Word = Microsoft.Office.Interop.Word;
6 using Excel = Microsoft.Office.Interop.Excel;
7 namespace office示例
8 {
9 public class Account
10 {
11 public int ID { get; set; }
12 public string Name { get; set; }
13 public double Balance { get; set; }
14 }
15 class Program
16 {
17 static void Main(string[] args)
18 {
19 var getAccounts = new List<Account> {
20 new Account{ ID=123, Name="王芬芬", Balance=2900},
21 new Account{ID=356,Name ="泉清",Balance =-1800}
22 };
23
24 DisplayExcel(getAccounts, (account, cell) => {
25 //自己定义委托的方法主题 (该方法的两个参数 account与cell的类型已经被委托DisplayFunc确定了)
26 cell.Value = account.ID;
27 cell.Offset[0, 1].Value = account.Name;
28 cell.Offset[0, 2].Value = account.Balance;
29
30 //金额若是负数,红色提醒显示
31 if (account.Balance < 0)
32 {
33 cell.Interior.Color = 255;//红色
34 cell.Offset[0, 2].Interior.Color = 255;
35 }
36 });
37
38 //copy到word中
39 var word = new Word.Application();
40 word.Visible = true;//显示
41 word.Documents.Add();//新建文档
42 word.Selection.PasteSpecial();
43 //word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
44 }
45 static void DisplayExcel(IEnumerable<Account> accounts,
46 Action<Account, Excel.Range> DisplayFunc /*两个参数的委托*/)
47 {
48 //启动Execl
49 var x1 = new Excel.Application();//启动一个新的Excel程序实例(x1);
50 x1.Workbooks.Add();//新建excel
51 x1.Visible = true;//可以显示看见
52 x1.Cells[1, 1] = "ID"; x1.Cells[1, 2] = "姓名"; x1.Cells[1, 3] = "金额";//完成列标题
53 x1.Cells[2, 1].Select();//定位到第二行
54 //显示每个帐户信息
55 foreach (var ac in accounts)
56 {
57 DisplayFunc(ac, x1.ActiveCell);//执行委托
58 x1.ActiveCell.Offset[1, 0].Select();//定位到下一行,否则会造成覆盖
59 }
60
61 //实现复制
62 x1.Range["A1:C3"].Copy();//Excel显示上看起来有虚线框,为了copy到word中
63 //自动调整列的宽度
64 x1.Columns.AutoFit();
65 }
66 }
67 }
子曰:“学而时习之,不亦说乎!有朋自远方来,不亦乐乎!人不知而不愠,不亦君子乎!”
当来之世,经道灭尽,我以慈悲哀愍,特留此经止住百岁。其有众生,值斯经者,随意所愿,皆可得度。(南无阿弥陀佛)
道可道,非常道;名可名,非常名。
我常说,一个国家,一个民族,亡国都不怕,最可怕的是一个国 家和民族自己的根本文化亡掉了,这就会沦为万劫不复,永远不会翻身。---南怀瑾<国学大师>
当来之世,经道灭尽,我以慈悲哀愍,特留此经止住百岁。其有众生,值斯经者,随意所愿,皆可得度。(南无阿弥陀佛)
道可道,非常道;名可名,非常名。
我常说,一个国家,一个民族,亡国都不怕,最可怕的是一个国 家和民族自己的根本文化亡掉了,这就会沦为万劫不复,永远不会翻身。---南怀瑾<国学大师>