今天闲来无事想学习一下3.0开始使用的LINQ to SQL
但看其相关文章的时候遇到了很多3。0的新特性,罢然,先学习3.0新特性在再学习他了。
1.隐式类型化本地变量
就像类似javascript那样,变量无需特制定类型,统一使用使用"var"关键字来声明局部变量,而不再需要指明变量的确切类型了,变量的确切类型可通过声明变量时的初始值推断出来
例如:var age=15;
var list=new int[2]{1,2};
//CLR 会把他们解析成 int age=15; int[]list=new int[2]{1,2}
2.匿名类型
通过匿名类型,我们可以简单使用new { 属性名1=值1, 属性名2=值2, ..... , 属性名n=值n }的形式直接在函数中创建新的类型
var person=new {userName="zhangsan",age=18};
Console.WriteLine(string.Format("userName:{0} age:{1}",person.userName,person.age));
输出:userName:zhangsan age:18
3.隐式类型化数组
例:
var list = new[] { new { userName = "zhangsan", age = 15 }, new { userName = "lisi", age = 18 } };
Console.WriteLine(string.Format("{0}的年龄是{1}",list[0].userName,list[0].age));
4.对象构造
public class Man
{
public string userName { set; get; }//编译器自动为你生成get、set操作以及字段,并且你不能使用字段也不能自定义get、set操作,不过你可以分别定义get和set的访问级别,就好比是个标识 告诉CLR
public int age { set; get; }
}
public class Person
{
public Man man1{set;get;}
public Person(){
man1=new Man();
}
}
public class Test
{
static void Main(string[] args)
{
var person = new Person() { man1 = {userName="lisi",age=122 } };
Console.WriteLine(string.Format("我叫{0} 年龄{1}",person.man1.userName,person.man1.age));
//输出我叫lisi 年龄122
}
}