property创建对象
------------------------------------------------------------------------
c# 3.0可以支持根据property来创建对象。比如,有类
以前,我们只可以用构造函数来创建其对象,现在在3.0中支持用property来创建,即,可以用
var d = new Person { Name = "s" }; 来创建对象。
var关键字
--------------------------------------------------------------------------
var并不是c#3.0的类型,它是编译器的关键字,编译器根据实际变量的返回类型,自动推断类型。那么var c = null; 是无法编译通过,因为编译不知道null代表那个类型。所以,c#3.0还是强类型的。
匿名类
---------------------------------------------------------------------------
现在3.0可以支持用property来创建对象了,那么就有了匿名类的出现。比如,var d = new { Name = "s" };编译器自动产生一个有property叫做Name的匿名类,然后按这个类型分配内存,并初始化对象。在这个地方,还有个问题,比如,var d = new { "s" };是编译不通过的。因为,编译器不知道匿名类中的property的名字。但是,如果,string c = "d"; var d = new { c}; 则是可以通过编译的。编译器会创建一个叫做匿名类带有叫c的property。
也就是:string c="d";new(c);相当于new(c="d"),其中相当于声明了一个变量c。而匿名类的属性即为变量名。
------------------------------------------------------------------------
c# 3.0可以支持根据property来创建对象。比如,有类
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
以前,我们只可以用构造函数来创建其对象,现在在3.0中支持用property来创建,即,可以用
var d = new Person { Name = "s" }; 来创建对象。
var关键字
--------------------------------------------------------------------------
var并不是c#3.0的类型,它是编译器的关键字,编译器根据实际变量的返回类型,自动推断类型。那么var c = null; 是无法编译通过,因为编译不知道null代表那个类型。所以,c#3.0还是强类型的。
匿名类
---------------------------------------------------------------------------
现在3.0可以支持用property来创建对象了,那么就有了匿名类的出现。比如,var d = new { Name = "s" };编译器自动产生一个有property叫做Name的匿名类,然后按这个类型分配内存,并初始化对象。在这个地方,还有个问题,比如,var d = new { "s" };是编译不通过的。因为,编译器不知道匿名类中的property的名字。但是,如果,string c = "d"; var d = new { c}; 则是可以通过编译的。编译器会创建一个叫做匿名类带有叫c的property。
也就是:string c="d";new(c);相当于new(c="d"),其中相当于声明了一个变量c。而匿名类的属性即为变量名。
浙公网安备 33010602011771号