标签:
关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下。同时也是后面写Linq知识的基础。希望有兴趣的朋友,可以看看。
C# 3.0新语言特性和改进包括:
自动属性可以避免我们编写实体类时声明私有变量和get/set的逻辑,取而代之的是,编译器会自动为你生成一个私有变量和默认的get/set 操作。
在.Net2.0中我们这样定义一个Product类。
public class Prodcut { private string _productid; public string Productid { get { return _productid; } set { _productid = value; } } private string _prodcutname; public string Prodcutname { get { return _prodcutname; } set { _prodcutname = value; } } }
自动属性写法:
public class Prodcut { public string _productid { get; set; } public string _prodcutname { get; set; } }
像上面空的get/set属性的话,类中会自动生成一个成员变量和公开的get/set,也可以分别设置get/set的访问级别,如下
public class Prodcut { public string _productid { get; private set; } public string _prodcutname { private get; set; } }
C# 3.0中引进了新的关键字var,在声明局部变量时可用于替代原先的类型名,那么这个声明被视作隐式类型局部变量声明。
var i = 5; var j = "Hello World"; var k = 50.36; var x; //错误 var y = null; //错误 var z = { 1, 2, 3 }; //错误
去掉错误代码,我们调试状态下,查看数据类型
隐含类型局部变量要点:
1. 什么是匿名类型?
匿名类型,顾名思义就是没有名字(表面看不到,类名由编译器自动产生)的类型。
2. 匿名类型的作用?
当需要定义类来封装一些相关数据,而不需要任何相关联的方法、事件,而且这个类不需要在项目中重用时,我们也可考虑使用匿名类型来简化我们的操作。
3. 用法
var User = new { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" };
上面匿名类型,编辑会认为User相当于:
public class User { public string Name { get; set; } public string Url { get; set; } }
数组匿名类型:
var array = new[] { new { Name = "ZhangSan", Age = 26 }, new { Name = "LiSi", Age = 25 } };
匿名类型要点:
1. 对象初始化器
在.Net 2.0中非常依赖属性,当生成对象实例和使用对象时,我们是这样写的:
User user = new User(); user.Name = "swich"; user.Url = "http://www.cnblogs.com/liujie2272";
而在.Net 3.0中,对象初始化器由一系列成员对象组成,其对象必须初始化,用逗号间隔,使用{}封闭。我们可以这么写:
User User = new User { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" };
List<User> list = new List<User> { new User { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" }, new User { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" } };
2. 集合初始化器
集合初始化器由一系列集合对象组成,用逗号间隔,使用{}封闭。
List<int> sum= new List<int> { 11,21,31,41,51};
标签:
原文地址:http://www.cnblogs.com/liujie2272/p/5533683.html