是否可以以任何方式清理以下代码?
这是我在代码中使用的内容:
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的构造函数中添加一些内容吗?
答案 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()
};