匿名类型:
var curry = new { MainIngredient = "lamb", Style = "red", Spiciness = 1 };
见以下代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace VarDemo { public class Curry { public string MainIngredient { get; set; } public string Style { get; set; } public int Spiciness { get; set; } } class Program { static void Main(string[] args) { Curry cur1 = new Curry { MainIngredient = "Panic", Style = "Red", Spiciness = 8 }; var curry = new { MainIngredient = "lamb", Style = "red", Spiciness = 1 }; Console.WriteLine(curry.MainIngredient); Console.WriteLine(curry.Spiciness); Console.WriteLine(curry.Style); var curries = new[] { new { MainIngredient = "Panic", Style = "Red", Spiciness = 8 }, new { MainIngredient = "Panic", Style = "Red", Spiciness = 8 }, new { MainIngredient = "Soyou", Style = "yell", Spiciness = 2 }, }; Console.WriteLine(curries[0].ToString()); Console.WriteLine(curries[0].GetHashCode()); Console.WriteLine(curries[1].GetHashCode()); Console.WriteLine(curries[2].GetHashCode()); Console.WriteLine(curries[0].Equals(curries[1])); Console.WriteLine(curries[0].Equals(curries[2])); Console.WriteLine(curries[0] == curries[1]); Console.WriteLine(curries[0] == curries[2]); Console.ReadLine(); } } }
注意:这里显示的属性定义为只读属性,这表示,如果要在数据存储对象中修改属性的值,就不能使用匿名类型了。
1.匿名类型上的Equals()的实现比较对象的状态,如果一个对象的每个属性都与另一个对象的对应属性值相同,结果就是true;
2.==运算符比较对象的引用;(数组中的每一项都引用匿名类型的不同实例)