Code
11.隐含类型局部变量
2
3 var age = 26;
4
5 var username = "zhuye";
6
7 var userlist = new [] {"a","b","c"};
8
9 foreach(var user in userlist)
10
11 Console.WriteLine(user);
12
13
14纯粹给懒人用的var关键字,告诉编译器(对于CLR来说,它是不会知道你是否使用了var,苦力是编译器出的),你自己推断它的类型吧,我不管了。但是既然让编译器推断类型就必须声明的时候赋值,而且不能是null值。注意,这只能用于局部变量,用于字段是不可以的。
15
162.匿名类型
17
18 /**////匿名类
19 ///匿名类型允许开发人员定义行内类型,无须显式定义类型。常和var配合使用,var用于声明匿名类型。
20 ///定义一个临时的匿名类型在LINQ查询句法中非常常见,我们可以很方便的实现对象的转换和投影。
21
22
23 var data = new { name = "yang", age = 12 };
24
25 Console.WriteLine("name:{0} age:{1}",data.name,data.age);
26
27
283.扩展方法
29
30 /**//// <summary>
31 /// 扩展方法,只能在静态类中定义并且是静态方法,如果扩展方法名和原有方法名发生冲突,那么扩展方法将失效。
32 /// </summary>
33 static class AddMeth{
34 public static string Stringadd(this String s)
35 {
36 return s + "11";
37 }
38 }
39
40 /**////调用扩展方法
41 Console.WriteLine("11".Stringadd());
42
434.集合初始化器
44
45 class Person {
46 public string username { get; set; }
47 public int age { get; set; }
48 public override string ToString()
49 {
50 return String.Format("username:{0} age:{1}", this.username, this.age);
51 }
52 }
53
54 //集合初始化器
55
56 var persons = new List<Person>{
57 new Person{username="yang",age=21},
58 new Person{username="y",age=25}
59 };
60
61
62 foreach (Person p in persons) {
63 Console.WriteLine(p.ToString());
64 }
65
66
675.Lambda表达式
68
69 //Lambda表达式
70
71 var List = new[] { "aa","bb","ac"};
72
73 var result = Array.FindAll(List, s => s.IndexOf("a") > -1);
74
75 foreach (var v in result) {
76 Console.WriteLine(v);
77 }
78 //Lambda表达式 查询语句
79 var selectperson = from p in persons where p.age > 20 select p.username.ToUpper() ;//返回的是String类型集合
80
81
82 var selectpersons = persons.Where(p => p.age > 20); //返回的是Person对象集合
83
84 foreach (Person p in selectpersons) {
85 Console.WriteLine(p.age);
86 }
87
88 foreach (String p in selectperson) {
89 Console.WriteLine("通过查询语句"+p);
90 }
91
11.隐含类型局部变量
2
3 var age = 26;
4
5 var username = "zhuye";
6
7 var userlist = new [] {"a","b","c"};
8
9 foreach(var user in userlist)
10
11 Console.WriteLine(user);
12
13
14纯粹给懒人用的var关键字,告诉编译器(对于CLR来说,它是不会知道你是否使用了var,苦力是编译器出的),你自己推断它的类型吧,我不管了。但是既然让编译器推断类型就必须声明的时候赋值,而且不能是null值。注意,这只能用于局部变量,用于字段是不可以的。
15
162.匿名类型
17
18 /**////匿名类
19 ///匿名类型允许开发人员定义行内类型,无须显式定义类型。常和var配合使用,var用于声明匿名类型。
20 ///定义一个临时的匿名类型在LINQ查询句法中非常常见,我们可以很方便的实现对象的转换和投影。
21
22
23 var data = new { name = "yang", age = 12 };
24
25 Console.WriteLine("name:{0} age:{1}",data.name,data.age);
26
27
283.扩展方法
29
30 /**//// <summary>
31 /// 扩展方法,只能在静态类中定义并且是静态方法,如果扩展方法名和原有方法名发生冲突,那么扩展方法将失效。
32 /// </summary>
33 static class AddMeth{
34 public static string Stringadd(this String s)
35 {
36 return s + "11";
37 }
38 }
39
40 /**////调用扩展方法
41 Console.WriteLine("11".Stringadd());
42
434.集合初始化器
44
45 class Person {
46 public string username { get; set; }
47 public int age { get; set; }
48 public override string ToString()
49 {
50 return String.Format("username:{0} age:{1}", this.username, this.age);
51 }
52 }
53
54 //集合初始化器
55
56 var persons = new List<Person>{
57 new Person{username="yang",age=21},
58 new Person{username="y",age=25}
59 };
60
61
62 foreach (Person p in persons) {
63 Console.WriteLine(p.ToString());
64 }
65
66
675.Lambda表达式
68
69 //Lambda表达式
70
71 var List = new[] { "aa","bb","ac"};
72
73 var result = Array.FindAll(List, s => s.IndexOf("a") > -1);
74
75 foreach (var v in result) {
76 Console.WriteLine(v);
77 }
78 //Lambda表达式 查询语句
79 var selectperson = from p in persons where p.age > 20 select p.username.ToUpper() ;//返回的是String类型集合
80
81
82 var selectpersons = persons.Where(p => p.age > 20); //返回的是Person对象集合
83
84 foreach (Person p in selectpersons) {
85 Console.WriteLine(p.age);
86 }
87
88 foreach (String p in selectperson) {
89 Console.WriteLine("通过查询语句"+p);
90 }
91