在c#中,
var x = new {};
声明一个没有属性的匿名类型。这与
有什么不同var x = new object();
答案 0 :(得分:10)
是的,使用的类型不同。您可以在编译时告诉它:
var x = new {};
// Won't compile - no implicit conversion from object to the anonymous type
x = new object();
如果你问new{}
是否有用 - 那么,这是另一回事......我不能立即想到任何明智的用途。
答案 1 :(得分:8)
嗯,对于初学者来说,object是一个实际的非匿名类型......如果你在第二个例子中执行x.GetType(),你将会返回System.Object。
答案 2 :(得分:0)
如上所述,从GetType返回,x将不是object类型,因此您无法将对象类型分配给该变量。
var x = new { };
var y = new object();
//x = y; //not allowed
y = x; //allowed
答案 3 :(得分:0)
new {}
会覆盖object
的三种方法:
Equals
- 如其他答案中所述,new object
和new {}
有不同的类型,因此它们并不相同。GetHashCode
为new {}
返回0(但为什么还要将它放在哈希表中?)ToString
为new {}
不幸的是,我无法想到这一切的实际应用。我只是很好奇。