最近看了一些c#3.0的一些东西 写点随笔备忘
一.隐式类型
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
var myint = 3;
var myStr = "Hello CSharp";
Console.WriteLine("myint::{0}, myStr::{1}", myint, myStr);
var myArray = new [] { 3, 4, 5, 6 };
foreach (var num in myArray)
{
Console.WriteLine(num);
}
注意 :
1.隐式类型不能用于类的成员变量中
如
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
private int myInt = 1;//error
2.隐式类型不能用于声明 函数的返回值或者参数
如 var SomeMethod(var rhs, var lhs) //error
二.扩展方法
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
static class Method
{
public static void IncreaseNum(this int i)
{
Console.WriteLine("IncreadNum i :: {0}", ++i);
}
public static void DecreaseNum(this int i)
{
Console.WriteLine("DecreadNum i :: {0}", --i);
}
}
注意 :
1.扩展方法必须声明在静态类中,且方法必须是静态方法。
2.扩展方法的调用用 类中的实例调用 或者以静态类的静态方法调用实例
如
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
int i = 30;
//实例使用静态method的扩展方法
i.DecreaseNum();
i.IncreaseNum();
//静态类调用静态方法
Method.DecreaseNum(i);
Method.IncreaseNum(i);
三.初始化
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
2
3 List<string> myList = new List<string>{"AAA", "BBB", "CCC"};
4
5 myList.Add("DDD");
6 foreach (var num in myList)
7 {
8 Console.WriteLine(num);
9 }
注意 :
1.必须实现 ICollection<T> 的接口
四.匿名类
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1 var myCar = new { Color = "Red", Name = "BMW" };
2
3 Console.WriteLine(myCar.Color);
4 Console.WriteLine(myCar.Name);
5
6 //匿名类的嵌套
7
8 var myGarge = new
9 {
10 Contain = "32",
11 Name = "MyStore",
12 CarOne = new { Color = "Red", Name = "BMW" },
13 CarTwo = new { Color = "Black", Name = "Aodi" },
14 CarThree = new { Color = "Blue", Name = "BYD" },
15
16 Cars = new [] {new { Color = "Red", Name = "BMW0000" },
17 new { Color = "Red", Name = "BMW1111" },
18 new { Color = "Red", Name = "BMW2222" }
19 }
20 };
21
22 Console.WriteLine(myGarge.CarThree.Name);
23 Console.WriteLine(myGarge.Cars[1].Name);
24 }
注意:
1.匿名类无法获得类名
2.匿名类只有属性,没有成员字段和成员方法
3.匿名类只有默认的构造函数。
五.Lambda表达式
先写这么多吧,还有的明天再说。