为对象属性分配值

时间:2010-09-09 11:29:13

标签: c#

有更快的方法来执行以下操作吗?想要减少代码行数。

var item = new SpecialObject();
var dictionary = new Dictionary<string, object>();
dictionary.Add("key1", "value1");
dictionary.Add("key2", "value2");

item.Name = "name";
item.Id = 1;
item.Dictionary = dictionary;

谢谢..

2 个答案:

答案 0 :(得分:11)

您可以使用对象初始值设定项:

var item = new SpecialObject
{
    Id = 1,
    Name = "name",
    Dictionary = new Dictionary<string, object>{
    {    
        {"key1", "value1"},
        {"key2", "value2"}
    }
}

修改评论:

或使用构造函数,但我认为这不太可读:

调用代码:

var item = new SpecialObject(1, "name", new Dictionary<string, object>{
        {"key1", "value1"},
        {"key2", "value2"}
});

构造函数:

public SpecialObject(int id, string name, IDictionary<string, object> dict)
{
    this.Id = id;
    this.name = Name;
    this.Dictionary = dict;
}

答案 1 :(得分:0)

如果你可以改变SpecialObject,你可以(而不是安德鲁斯解决方案,这可能会更好):

  • 介绍工厂
  • 介绍一个建设者
  • 使用构造函数

对于像这样的简单对象,我会这样:

var item = new SpecialObject(1, "name", new Dictionary<string, object>());
item.Dictionary.Add("key1", "value1");
item.Dictionary.Add("key2", "value2");

这是一个很好的时间来问问自己为什么字典没有在构造函数中初始化,每次创建一个新的SpecialObject时传递它都感觉很奇怪。