在C#中创建新类时的快捷方式

时间:2011-06-30 06:37:42

标签: c#

是否可以以任何方式清理以下代码?

这是我在代码中使用的内容:

var _index = new IndexViewModel();
_index.PageMeta = new PageMeta();
_index.Que = new Q();
_Index.Test = new T();

这是我的班级定义:

public class IndexViewModel {
   public PageMeta PageMeta { get; set; }
   public T Test { get; set; }
   public Q Que { get; set; }
}

我试图记住在宣布新课时是否有快捷方式。我可以在IndexViewModel的构造函数中添加一些内容吗?

5 个答案:

答案 0 :(得分:5)

好吧,你可以使用一个对象初始化器:

var _index = new IndexViewModel 
{
    PageMeta = new PageMeta(),
    Que = new Q(),
    Test = new T()
};

这可能不是一个很好的缩影,但可以节省一些重复的代码。

编辑澄清有关评论的问题

public class IndexViewModel {

   // The default constructor now initializes de values:
   public IndexViewModel() 
   {
       PageMeta = new PageMeta();
       Q = new Q();
       T = new T();
   }

   public PageMeta PageMeta { get; set; }
   public T Test { get; set; }
   public Q Que { get; set; }
}

如果向构造函数添加初始化,则不再需要使用对象初始值设定项:

var _index = new IndexViewModel(); //<- initialized by its own constructor

答案 1 :(得分:2)

您可以轻松添加一个构造函数,默认情况下会创建每个新对象:

public class IndexViewModel {
   public IndexViewModel() {
       PageMeta = new PageMeta();
       Q = new Q();
       T = new T();
   }
   public PageMeta PageMeta { get; set; }
   public T Test { get; set; }
   public Q Que { get; set; }
}

然后当你需要一个新的IndexViewModel时,每个对象都有一个新的,只需调用

new IndexViewModel()

答案 2 :(得分:1)

我认为你可以做到:

var _index = new IndexViewModel() 
{ 
    PageMeta = new PageMeta(),
    Test = new T(),
    Que = new Q()
};

答案 3 :(得分:1)

你的意思是你想要一个初始化实例的快捷方式,对吗?如果是这样的话:

var _index = new IndexViewModel()
{
    PageMeta = new PageMeta(),
    Que = new Q(),
    Test = new T()
};

阅读你的评论:我认为我没有正确理解你的问题。你希望这个初始化发生在每个实例上,对吗?

public class IndexViewModel 
{
    public PageMeta PageMeta { get; set; }
    public T Test { get; set; }
    public Q Que { get; set; }

    public IndexViewModel()
    {
        this.PageMeta = new PageMeta();
        this.Test = new T();
        this.Que = new Q();
    }
}

答案 4 :(得分:0)

从(我认为)C#3.0开始你可以做到:

var _index = new IndexViewModel { 
                   PageMeta = new PageMeta(), 
                   Que = new Q(), 
                   Test = new T()
};