智能网站建设背景,检查网站打开速度,5118网站怎么做的,商城类型的网站怎么做C#中声明方法或类时#xff0c;可以不指定的类或方法的名字#xff0c;也就是匿名类和匿名的方法。以下主要介绍C#中匿名类的声明及使用。
1、匿名类的使用
匿名类是C# 3.0/.NET 3.x中新增特性#xff0c;在匿名类的语法中并没有为其命名#xff0c;而是直接使用new { }方…C#中声明方法或类时可以不指定的类或方法的名字也就是匿名类和匿名的方法。以下主要介绍C#中匿名类的声明及使用。
1、匿名类的使用
匿名类是C# 3.0/.NET 3.x中新增特性在匿名类的语法中并没有为其命名而是直接使用new { }方式。
例如
var anonyClass new{ID 1000,Name CJavaPy,Age 3};
Console.WriteLine(ID:{0}-Name:{1}-Age:{2}, anonyClass.ID,anonyClass.Name, anonyClass.Age);
注意通过反编译工具可以看出匿名类被编译后会生成一个[泛型类]且匿名类所生成的属性都是只读的与其对应的字段也是只读的匿名类还重写了基类的三个方法Equals,GetHashCode和ToString
2、匿名类的共享
1如果定义的匿名类与之前定义过的一模一样属性类型和顺序都一致则默认共享前一个泛型类。
var annoyClass1 new
{ID 1010,Name C,Age 3
};
Console.WriteLine(ID:{0}-Name:{1}-Age:{2}, annoyClass1.ID,annoyClass1.Name, annoyClass1.Age);
Console.WriteLine(annoyClass1.ToString());
// 属性类型和顺序与annoyClass1一致共同使用一个匿名类
var annoyClass2 new{ID 1020,Name Python,Age 5};
Console.WriteLine(ID:{0}-Name:{1}-Age:{2}, annoyClass1.ID,annoyClass1.Name, annoyClass1.Age);
Console.WriteLine(annoyClass1.GetType() annoyClass2.GetType():{0},annoyClass1.GetType() annoyClass2.GetType());
2如果属性名称和顺序一致但属性类型不同还是共同使用一个泛型类只是泛型参数改变了而已所以在运行时会生成不同的类
var annoyClass2 new{ID 1020,Name Python,Age 5};
var annoyClass3 new{ID Java,Name 1030,Age 7};
Console.WriteLine(ID:{0}-Name:{1}-Age:{2}, annoyClass3.ID,annoyClass3.Name, annoyClass3.Age);
Console.WriteLine(annoyClass3.GetType() annoyClass2.GetType():{0},annoyClass3.GetType() annoyClass2.GetType());
3如果数据型名称和类型相同但顺序不同那么编译器会重新创建一个匿名类
var annoyClass2 new{ID 1020,Name Python,Age 5};
var annoyClass4 new{Name JavaScript,ID 1030,Age 7};
Console.WriteLine(ID:{0}-Name:{1}-Age:{2}, annoyClass4.ID,annoyClass4.Name, annoyClass4.Age);
Console.WriteLine(annoyClass4.GetType() annoyClass2.GetType():{0},annoyClass4.GetType() annoyClass2.GetType());