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