只读字段 readonly Readonly比const要灵活,可以在构造函数中给只读字段赋值,但不能在其他地方赋值,只读字段还可以是一个实例字段,而不是静态字段,类的每个实例可以有不同的值(实例化构造函数声明)。与const字段不同,如果要把只读字段设置为静态(在静态构造函数声明),就必须显示声明。 匿名类型 Var关键字用于表示隐式类型化的变量 var与new一起使用可以创建匿名类型 相同类型的之间可以赋值 也可以通过已有类创建对象的属性进行初始化。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class NBAPlayer { public string name; public int age; public string teamName; public NBAPlayer(string Name, int Age, string TeamName) { this.name = Name; this.age = Age; this.teamName = TeamName; } } class Program { static void Main(string[] args) { var Parker = new { name = "Parker", age = 32, teamName = "spurs" }; Console.WriteLine(Parker.name + " "+Parker.age +" " +Parker.teamName); var LBJ = new { name = "LBJ", age = 30, teamName = "CAV" }; Parker = LBJ; NBAPlayer TimDucun = new NBAPlayer("TimDucun", 39, "spurs"); var TD = new { TimDucun.name, TimDucun.age, TimDucun.teamName }; Console.WriteLine(TD.name + " " + TD.age + " " + TD.teamName); Console.ReadLine(); } } } 结构体 struct 需要小的数据结构处于性能考虑 可以使用结构体而不是类 结构体可以用来存储属性以及有自己的构造函数(禁止在结构体内使用没有参数的构造函数 标红部分说明struct是值类型,如果是类的话会报错 结构是值类型,不是引用类型,它们存储在栈中,当把结构作为参数传递给方法时,应把作为ref参数,避免性能损失 结构不支持继承,但是结构可以访问System.Object的方法 甚至可以重写其中的方法。 struct Dimensions { public double length; public double width; public Dimensions(double l, double w) { length = l; width = w; } public string ToString() { return "重写"; } } class Program { static void Main(string[] args) { Dimensions di; di.length = 30.0; di.width = 30.0; Dimensions newDi = new Dimensions(20, 15); Console.WriteLine(di.width * di.length); Console.WriteLine(newDi.width * newDi.length); Console.WriteLine(di.ToString()); Console.ReadLine(); } } 部分类 Partial 关键字允许类 结构或者接口放在多个文件夹中 namespace class1 { class partialClass { public string Method1() { return "method 1"; } } } namespace class2 { class partialClass { public string Method2() { return "Method2"; } } } class1.partialClass p1 = new class1.partialClass(); Console.WriteLine(p1.Method1()); class2.partialClass p2 = new class2.partialClass(); Console.WriteLine(p2.Method2()); Console.ReadLine(); 静态类 调用静态类内部成员以及函数 无需实例化类直接用类名调用。
|