Bla*_*man 4 c# object-initializer
如何将项添加到初始化为的对象:
object obj = new { blah = "asdf" };
Run Code Online (Sandbox Code Playgroud)
如果我想添加另一个键值对,我怎么样?
Bol*_*ock 10
使用该初始化程序语法创建对象后,无法修改对象的匿名类型定义.也就是说,一旦你初始化它{ blah = "asdf" },它只有该blah属性.你不能添加另一个.这是因为匿名类型是静态类型.
该ExpandoObject答案的工作,虽然,对于一个dynamic对象.请参阅其他答案.
如果你真的只是想管理一组键值对(有点基于你提出问题的方式),请使用字典.
var kvp = new Dictionary<string, string>
{
{ "blah", "asdf" }
};
kvp.Add("womp", "zxcv");
Run Code Online (Sandbox Code Playgroud)
@BoltClock是对的.另一种选择是在失去智能感知时使用ExpandoObject.
dynamic obj = new ExpandoObject();
obj.blah = "asdf";
// sometime later
obj.somethingelse = "dfgh";
// obj now has 'blah' and 'somethingelse' 'properties'
Run Code Online (Sandbox Code Playgroud)
一旦你定义了这样的对象,你就完成了.你不能添加任何东西.
但是,如果您使用的是C#4.0,则可以始终使用动态类型:
dynamic obj = new ExpandoObject();
obj.blah = "asdf";
obj.blahBlah = "jkl;";
Run Code Online (Sandbox Code Playgroud)