C#:如何为部分类中的属性设置默认值?

标签 c# properties default partial-classes

我是 C# 的新手,所以请多多包涵...

我正在实现一个分部类,并想像这样添加两个属性:

public partial class SomeModel
{
    public bool IsSomething { get; set; }
    public List<string> SomeList { get; set; }

    ... Additional methods using the above data members ...
}

我想初始化两个数据成员:IsSomethingTrueSomeListnew 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/

相关文章:

c# - 访问器的目的是什么?

javascript - 从另一个对象中访问对象属性 (JavaScript/jQuery)

Javascript JQuery 属性范围

java - 设置默认的java编译器

eclipse - Eclipse快捷键CTRL + M行为

c++ - QList<float*> 类型的 NULL 返回值

c# - 在 SQL 中,我想从前一行日期中减去一个日期

c# - Control.Controls 属性是否返回递归嵌套的控件?

javascript - 建立一个包含模型的链接

c# - PDFsharp自动换行