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

2320

如何给 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;
    }
}

有更好的方法吗?

23个回答

0
class Person 
{    
    /// Gets/sets a value indicating whether auto 
    /// save of review layer is enabled or not
    [System.ComponentModel.DefaultValue(true)] 
    public bool AutoSaveReviewLayer { get; set; }
}

32
欢迎来到Stack Overflow!请注意,除非你有一些新的好信息,否则重新激活一个旧问题通常是不被允许的。然而,在这种情况下,已经有几个人发表了关于DefaultValue属性的帖子。如果其他人已经发表了你想说的内容,通过点击其答案旁边数字上面的上箭头来为他们投票是更恰当的做法。 - fire.eagle
11
评论需要50个声望值。如果我没记错的话,投票也需要声望值。 - Ben Voigt

-1

我知道这是一个老问题,但当我在寻找如何拥有一个默认值并具有覆盖选项时,它出现了。我想到了

//base class
public class Car
{
    public virtual string FuelUnits
    {
        get { return "gasoline in gallons"; }
        protected set { }
    }
}
//derived
public class Tesla : Car
{
    public override string FuelUnits => "ampere hour";
}

7
注意:这不会设置初始值,而是创建一个获取器来返回一个常量字符串。如果FuelUnits的值被设置为另一个字符串,FuelUnits将忽略该值并继续返回在获取器中定义的字面字符串。 - AjimOthy

-4

我认为这样做可以为你提供默认值为false的SomeFlag。

private bool _SomeFlagSet = false;
public bool SomeFlag
{
    get
    {
        if (!_SomeFlagSet)
            SomeFlag = false;        

        return SomeFlag;
    }
    set
    {
        if (!_SomeFlagSet)
            _SomeFlagSet = true;

        SomeFlag = value;        
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接