在C#中创建新类时的快捷方式
本文关键字:快捷方式 新类时 创建 | 更新日期: 2023-09-27 18:00:57
有可能以任何方式清理以下代码吗?
这是我在代码中使用的:
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的构造函数中放入一些东西吗?
好吧,你可以使用一个对象初始化器:
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
您可以很容易地添加一个构造函数,默认情况下创建每个新对象:
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()
您的意思是想要一个初始化实例的快捷方式,对吧?如果是:
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();
}
}
我想你可以做:
var _index = new IndexViewModel()
{
PageMeta = new PageMeta(),
Test = new T(),
Que = new Q()
};
从(我认为(C#3.0开始,你可以做:
var _index = new IndexViewModel {
PageMeta = new PageMeta(),
Que = new Q(),
Test = new T()
};