在C#中,
var x = new {};
声明一个没有属性的匿名类型。这与什么不同呢?
var x = new object();
?
在C#中,
var x = new {};
声明一个没有属性的匿名类型。这与什么不同呢?
var x = new object();
?
是的,使用的类型是不同的。您可以在编译时确定:
var x = new {};
// Won't compile - no implicit conversion from object to the anonymous type
x = new object();
new{}
是否有任何有用的用途-那么,这是一个不同的问题...我暂时想不出它有什么明智的用途。new{}
很棒:它比new object()
更紧凑。 - yfeldblum首先,对象是一个实际的、非匿名的类型...如果在第二个示例中执行x.GetType(),你将得到System.Object。
除了GetType返回的类型之外,x不会是对象类型,因此您将无法将对象类型分配给该变量。
var x = new { };
var y = new object();
//x = y; //not allowed
y = x; //allowed
Jon Skeet的回答基本上是我想要的,但为了完整起见,这里有一些更多的差异,从反射中获得:
new {}
覆盖了object
的三个方法:
Equals
- 如其他答案所述,new object
和new {}
具有不同的类型,因此它们不相等。GetHashCode
返回new {}
的0(但您为什么要将其放入哈希表中呢?)ToString
打印new {}
的“{}”不幸的是,我想不出所有这些的实际应用。我只是好奇。