是否可以将匿名类型中的变量值用作属性名称?
var foo = "bar";
var anon = new {foo = _list};
// ^ foo should be "bar"
我希望很清楚我要求的是什么
答案 0 :(得分:3)
不,不是。您实际上并未创建动态对象,而是创建匿名类型。因此,应该静态地知道成员的名称。如果您想在运行时添加/删除属性,请查看ExpandoObject
。但是您仍然必须指定属性名称,如obj.bar
,您认为不是可能使用动态。
编辑:您已经更改了问题,但答案仍然存在。仍然无法实现。您无法动态指定标识符。唯一的方法是使用{在运行时创建动态属性{3}}。这样你就可以给出你想要的任何名字属性。但显然这不是一种理想的方式,可能对你的情况来说太多的开销。也许你可以使用Dictionary
达到你想要的效果,但由于你没有提供任何关于你将在何处使用它的信息,我无法肯定地说出任何事情。
答案 1 :(得分:1)
不清楚你在问什么。
在您的示例中,您创建了一个匿名类型,其属性名为foo,与_list类型相同:
var foo = "bar"; // has no effect on bellow line
var dyn = new {foo = _list}; // foo will be same type (and value) as _list
"富"在匿名类型内是一个字段,外部作用域中的foo是局部变量。它们是两个不同的变量引用,它们可以具有相同的参考值(即指向相同的变量),例如在以下示例中。
也许你打算这样做:
var dyn = new {foo = _list};
var foo = dyn.foo;
另外,var!=动态。 var是一个隐式编译时定义类型,dynamic是一个运行时定义类型。