自动属性:
我们在定义一个类时,不必写字段,
例如: public string Name{get;set} 反编译会看到会自动生成一个name字段
编译时系统自动推断,可以知道i 是Int32类型。
dynamic 在编译阶段我们不必确定变量是什么类型,系统在运行时自动其确定类型,类似javascript中的var,是弱类型
对象初始化器
初始化一个对象
集合初始化器
拓展方法
常用在我们拿到一个编译好的程序集,我们无法直接修改程序集里面的类型代码,
可是我们又想将原来的类型进行扩充(例如给其中一个类添加一个成员方法),这个时候我就可以用到拓展方法。
写拓展方法三要素:
1.静态类 2.静态方法 3.静态方法的第一个参数,必须是要拓展的类型的对象
我们在定义一个类时,不必写字段,
例如: public string Name{get;set} 反编译会看到会自动生成一个name字段
可变类型(var,dynamic)
var i=10; 这里的var不是弱类型编译时系统自动推断,可以知道i 是Int32类型。
dynamic 在编译阶段我们不必确定变量是什么类型,系统在运行时自动其确定类型,类似javascript中的var,是弱类型
对象初始化器
例:
public class Person
{
public string Name{get;set}
public string Address{get;set}
public string Age{get;set}
}
初始化一个对象
var p1=new Person(){Name="gds",Age=15}
用到了语法糖,这样有个好处是,我们不必重载许多的构造函数
集合初始化器
List<Person> listPerson=new List<Person>(){
new Person(){Name="xz"},
new Person(){Name="cLuo"}
};
匿名对象
var myObj=new {Name="sad",Genter="男"};
编译器会自动为我们生成一个类
拓展方法
常用在我们拿到一个编译好的程序集,我们无法直接修改程序集里面的类型代码,
可是我们又想将原来的类型进行扩充(例如给其中一个类添加一个成员方法),这个时候我就可以用到拓展方法。
写拓展方法三要素:
1.静态类 2.静态方法 3.静态方法的第一个参数,必须是要拓展的类型的对象