class Program
{
static void Main(string[] args)
{
//1.对象初始化(器),它能初始化一个对象中的所有允许访问的字段和属性。具体地说,在创建对象的构造器调用之后,你现在可以增加一对大括号,并在其中添加一个成员初始化列表。每个成员的初始化操作都是一个赋值操作,等号左边是一个允许访问的字段属性,右边则是具体要赋的值。
MyClass cls = new MyClass() { Age = 12, Name = "zhang" };
cls.fun();
//2.数组初始化
string[] str = { "1","2","3"};
string[] str1 = new string[] { "a", "b", "c" };
//3.集合初始化(器)
List<string> str2 = new List<string> { "1a", "2b", "3c" };
//4.匿名类,后部{}内是类的主体定义,类中没有方法(与 1对象初始化器 比较),只能包含public字段,字段必须全部初始化,不可以是static字段,p1最终的结果仍为一强类型结果。 编译器会根据初始化字段的数据类型来推断出字段的类型
var p1= new { ID = 123456, Name = "张三" };
var p2= new { ID = 123, Name = "li" };//p1、p2是同一类型
var p3= new {Name = "li", ID = 123 };//p3和p1、p2不是同一类型
//5.创建隐式类型转换的数组,则运行后names是一个string类型的数组(注意后面赋的初值都是相同类型的,在这里是string类型)
var names=new[] {"John","Diana","James"};
//这种方式尤其适用于匿名类型
var name=new[] {new {ID = 123456, Name = "张三"},
new {ID = 123, Name = "haha"},
new {ID = 456, Name = “wuwu"},
}
}
//6.自动属性,代码中没有对应字段,由编译器自动生成
public static int Age
{
get;
set;
}
}
class MyClass
{
int age;
public int Age
{
get { return age; }
set { age = value; }
}
string name;
public string Name
{
get { return name; }
set { name = value; }
}
public void fun()
{
Console.WriteLine("fun");
}
}