1.var推断类型
只能定义局部变量,不能定义成员变量
定义的时候必须同时完成初始化,不能使用var定义变量为null
var本身不是一个新类型,只是用来修饰可以推断出具体类型的局部变量
从IL编译的角度来讲,没有任何区别
2.匿名类
直接使用new关键字创建对象,使用var定义对象属性
而不需要提前编写类的成员,并且只能添加对象的属性
1 var objPerson=new 2 { 3 Name="小王", 4 Age=25, 5 ClassName="软件1班" 6 };
3.扩展方法
扩展方法必须在静态类中定义
扩展方法是静态方法
类本身的方法与扩展方法重名时,类本身的方法被优先使用
第一个参数前加关键字this,this后的类型表示为所有的此种类型添加扩展方法4
扩展方法内如果只有一个参数,它不是参数,代表当前变量
扩展方法也可以重载
扩展方法不要过多使用
4.扩展方法的应用
如果想为一个封装好的密封类添加一个方法,可以用扩展方法
5.扩展方法的定义
不带参数的扩展方法: static 方法名 (this 目标类型 目标类型参数)
带参数的扩展方法定义: static 方法名 (this 目标类型 目标类型参数, 参数类型1 参数名1,,...... )
1 public static int GetAvg(this int sum) 2 { 3 return sum / 5; 4 } 5 6 public static string StuInfo(this string name) 7 { 8 return string.Format("{0}你好,你的5门平均成绩为:", name); 9 } 10 11 public static string WelcomeStu(this Student stu) 12 { 13 return "欢迎你:" + stu.StuName; 14 } 15 16 public static string WelcomeStu(this Student stu,int age) 17 { 18 return string.Format("姓名{0},年龄{1}", stu.StuName,age); 19 }
原文:https://www.cnblogs.com/yangmengke2018/p/10922329.html