【问题标题】:C# Automatic Properties -- setting defaultsC# 自动属性——设置默认值
【发布时间】:2011-03-21 02:53:03
【问题描述】:

为 C# 公共属性设置默认值的最简单/直接的方法是什么?

//如何设置默认值?

public string MyProperty { get; set; }

请不要建议我使用私有属性并实现获取/设置公共属性。尽量保持简洁,并且不想争论为什么会更好。谢谢。

【问题讨论】:

  • OT:我认为您的意思是私有字段
  • 我认为您混淆了公共/私有和自动属性与手动实现的属性与支持字段的概念。这些概念是独立的。

标签: c# .net default-constructor automatic-properties


【解决方案1】:

只需在构造函数中初始化即可:

public class MyClass
{
    public string MyProperty { get; set; }

    public MyClass()
    {
        MyProperty = "default value";
    }
}

请注意,如果您有多个构造函数,则需要确保它们中的每一个都设置属性或委托给另一个构造函数。

【讨论】:

  • 另一个属性或另一个 ctor?
  • 感谢乔恩,但 sbenderli 先搞定了 :)。出于某种原因,我错误地认为“默认值”会覆盖初始化中发送的内容。
  • @jk:另一个构造函数。多哈。编辑。
【解决方案2】:

在构造函数中设置默认值:

this.MyProperty = <DefaultValue>;

【讨论】:

  • this 语句不是多余的吗?
  • @Jimmy:我考虑在这种情况下使用“this”以使其更具可读性。我总是希望它读取 . = 。如果它只是 = 那么它会打破这种模式。
【解决方案3】:

请不要建议我使用私有财产

这是设置此类默认值的标准方法。您可能不喜欢它,但即使是自动属性语法在编译后的作用 - 它会生成一个私有字段并在 getter 和 setter 中使用它。

您可以在构造函数中设置属性,该属性将尽可能接近默认值。

【讨论】:

  • 没有争论——我只是想保持非关键代码的简洁。
  • @Alan 如果您有多个构造函数,那么它将不再简洁,因为您必须开始确保在所有代码路径中都进行初始化。使用私有支持字段,您可以有一个简洁位置来初始化该属性。
  • @AaronLS 如果你只是链接你的构造函数,你可能会没事。
【解决方案4】:

不,如果您可以仅标记属性以指示默认值,那就太好了,但您不能。如果你真的想使用自动属性,你不能在属性声明中设置默认值。

我想出的最简洁的解决方法是在构造函数中设置默认值。它还是有点丑。默认值不与属性声明并置,如果您有多个构造函数可能会很痛苦,但这仍然是我发现的最好的

【讨论】:

    【解决方案5】:

    如果您要使用属性的自动实现,唯一真正的选择是在构造函数中初始化属性值。

    【讨论】:

      【解决方案6】:

      从 C# 6.0 开始,您可以为自动属性分配默认值。

      public string MyProperty {get; set; } = "Default Value";
      

      【讨论】:

        猜你喜欢
        • 2012-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-28
        • 1970-01-01
        相关资源
        最近更新 更多