c# - 为 C# 自动属性赋予初始值的最佳方法是什么?

标签 c# constructor getter setter automatic-properties

如何为 C# 自动属性赋予初始值?

我要么使用构造函数,要么恢复到旧语法。

使用构造函数:

class Person 
{
    public Person()
    {
        Name = "Initial Name";
    }
    public string Name { get; set; }
}

使用普通属性语法(带有初始值)

private string name = "Initial Name";
public string Name 
{
    get 
    {
        return name;
    }
    set
    {
        name = value;
    }
}

有没有更好的办法?

最佳答案

在 C# 5 及更早版本中,要为自动实现的属性提供初始值,您必须在构造函数中进行。

C# 6.0 ,您可以在线指定初始值。语法是:

public int X { get; set; } = x; // C# 6 or higher

DefaultValueAttribute旨在供 VS 设计者(或任何其他消费者)用来指定默认值,而不是初始值。 (即使在设计对象中,初始值也是默认值)。

在编译时 DefaultValueAttribute 不会影响生成的 IL,也不会读取它来将属性初始化为该值(参见 DefaultValue attribute is not working with my Auto Property)。

影响 IL 的属性示例是 ThreadStaticAttribute , CallerMemberNameAttribute , ...

关于c# - 为 C# 自动属性赋予初始值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730/

相关文章:

c# - 如何创建动态 'contains or LIKE' 表达式以与 Linq 针对 OData 服务一起使用

c# - 如何使用 .NET 从十六进制颜色代码获取颜色?

java - 每次我实例化新对象时,属性都会回到零

c++ - 错误 C2679 : binary '=' : no operator found which takes a right-hand operand of type 'School *' (or there is no acceptable conversion)

actionscript-3 - Flash AS3 : 1026 Error: Constructor functions must be instance methods

C++ const public 字段与 getter 方法

c# - 按顺序获取文件中的行的最佳方法?

c# - 带有自定义JsonConverter的Json.NET异步支持

JavaScript getter 在继承期间运行

oop - matlab getter/setter 方法。为什么他们让我的程序 super 慢?