【发布时间】:2014-05-06 15:04:29
【问题描述】:
我不明白Anonymous Class 和object Class 之间的区别
如果我有一个匿名类型对象:
var x = new []
{
new {name = "x", phone = 125},
new {name = "f", phone = 859},
new {name="s",phone=584}
};
我可以看到如何遍历它并获取执行此操作的属性的值x.name ...
但是如果我把它改成object
var x = new Object[]
{
new {name = "x", phone = 125},
new {name = "f", phone = 859},
new {name="s",phone=584}
};
然后,如果我循环通过它,我将无法访问属性??
我尝试了不同的方法来从这个对象中获取值,但我失败了,我可能错过了什么吗?生成object array 有什么意义,我该如何使用它?
我知道我不能做这样的事情:new Object[] {name = 'x' ...
【问题讨论】:
-
我一直以为它只是一个别名,比如string/String,或者object/Object
-
@mason 新建一个字符串,然后按F12,你会看到字符串和对象不是原始类型
-
@mason C# 并没有真正的“原始类型”概念。这是一个俚语,并且没有很好的定义。你应该避免使用它。此外,patxy 完全正确,
string只是String的别名。它们完全可互换,并且编译器将在其处理的早期将string的所有实例替换为global::System.String。在任何给定的情况下,没有令人信服的理由使用其中一个。 (除非你做了一些邪恶的事情,比如创建自己的String类,其中string仍将引用系统类型。) -
@Servy 我从来没有说过你必须使用一种或另一种方式。我刚才说what the common practice is。这本身就应该是一个令人信服的理由。
-
@mason 这不是一种特别普遍的做法,也没有任何特别令人信服的理由让这种做法存在。我几乎从不使用
String,并且在任何地方都使用string,甚至你自己链接到的帖子也表明这正成为MS建议的更普遍的做法。
标签: c#