1.隐含类型局部变量
关键字var 从右边自动识别对象类型,是强类型,且仅限于局部变量
var a = "abc";
var b = new []{1,2,3,5};
var c = null; 不是类型,不能用
var d; 不可以
比如:foreach(var c in list<string>)
{...}
2.扩展方法
不改变现有类型的实例方法的情况下,扩展类的方法。Extention
static class Extention{static void Foo(this string s){...}}
给我的感觉就是对象调用全局方法。。
不需要通过继承方式扩展方法
缺点就是不能override
当出现方法重名时的优先级问题:
当前实例方法
最近的NameSpace的Extention Method
较远的NameSpace的Extention Method
3.对象与集合初始化器
public class point
{
int x, y;
public int Y
{get { return y; }set { y = value; }}
public int X
{get { return x; }set { x = value; }}
}
对象初始化
var e = new point { X = 1, Y = 0 };
集合初始化,不需通过ADD方法,以前比如构造个List,都要一个个现在就不用了
var b = new List<string> { "a","b","c","d"};
4.匿名类型
var e_1 = new { Name = "张三", age = 18 };
以下是我自己边学,练手用的测试代码
学完这些,感觉在新版C#3.0 微软给我的感觉是越来越灵活,某些程度上感觉方便些。
比如不需要通过继承或者改写类来扩展类的方法,匿名对象在局部使用时,比较方便,不需要构造太多的东西。
但是同时可能会造成滥用后的混乱,和不易维护。