我是 C# 的新手,所以请多多包涵...
我正在实现一个分部类,并想像这样添加两个属性:
public partial class SomeModel
{
public bool IsSomething { get; set; }
public List<string> SomeList { get; set; }
... Additional methods using the above data members ...
}
我想初始化两个数据成员:IsSomething
至 True
和 SomeList
至 new List<string>()
.通常我会在构造函数中执行此操作,但是因为它是一个部分类,所以我不想触及构造函数(我应该吗?)。
实现此目标的最佳方法是什么?
谢谢
PS 我在 ASP.NET MVC 中工作,向特定模型添加功能,因此是部分类。
最佳答案
针对 C# 6 进行了更新
C# 6 添加了为自动属性分配默认值的功能。该值可以是任何表达式(不必是常量)。下面是几个例子:
// Initialize to a string literal
public string SomeProperty {get;set;} = "This is the default value";
// Initialize with a simple expression
public DateTime ConstructedAt {get;} = DateTime.Now;
// Initialize with a conditional expression
public bool IsFoo { get; } = SomeClass.SomeProperty ? true : false;
原始答案
自动实现的属性可以在类构造函数中初始化,但不能在属性本身上初始化。
public SomeModel
{
IsSomething = false;
SomeList = new List<string>();
}
...或者您可以使用字段支持的属性(稍微多一些工作)并初始化字段本身...
private bool _IsSomething = false;
public bool IsSomething
{
get { return _IsSomething; }
set { _IsSomething = value; }
}
更新:我上面的回答没有阐明这是在部分类中的问题。 Mehrdad's answer提供了使用部分方法的解决方案,这符合我的第一个建议。我的第二个建议是使用非自动实现的属性(手动实现的属性?)将适用于这种情况。
关于C#:如何为部分类中的属性设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1272602/