C# 如何设置自动属性的默认值?

发布于 2024-11-05 05:33:38 字数 272 浏览 2 评论 0原文

我有一些接口和实现该接口的类:

public interface IWhatever {
   bool Value { get; set;}
}

public class Whatever : IWhatever {
   public bool Value { get; set; }
}

现在,C# 是否允许 Value 在不使用某些支持字段的情况下拥有一些默认值?

I have some interface and class implementing that interface:

public interface IWhatever {
   bool Value { get; set;}
}

public class Whatever : IWhatever {
   public bool Value { get; set; }
}

Now, does C# allow the Value to have some default value without using some backing field?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

对你而言 2024-11-12 05:33:38

更新

从 C# 6 (VS2015) 开始,此语法

public bool Value { get; set; } = true;

与为只读属性设置值一样

public bool Value { get; } = true;

完全有效C# 6 之前的旧答案

剧透警告令人兴奋的性质以下代码将不起作用

您是否在问“我可以这样做吗?”

public bool Value { get; set; } = true;

不,你不能。您需要在类的构造函数中设置默认值

Update

As of C# 6 (VS2015) this syntax is perfectly valid

public bool Value { get; set; } = true;

as is setting a value for a readonly property

public bool Value { get; } = true;

The old, pre C# 6 answer

Spoiler alert for those of an excitable nature: The following code will not work

Are you asking, "Can I do this?"

public bool Value { get; set; } = true;

No, you can't. You need to set the default value in the constructor of the class

转瞬即逝 2024-11-12 05:33:38

根据文档,如果其后面没有任何内容,则默认为 false。

但是,如果您希望使用 false 以外的初始值实例化它,您可以这样做:

public interface IWhatever 
{
   bool Value { get; set;}
}

public class Whatever : IWhatever 
{
    public bool Value { get; set; }

    public Whatever()
    { 
        Value = true;
    }
}

If there's nothing behind it, it defaults to false, according to the documentation.

However, if you want it to be instantiated with an initial value other than false, you can do that this way:

public interface IWhatever 
{
   bool Value { get; set;}
}

public class Whatever : IWhatever 
{
    public bool Value { get; set; }

    public Whatever()
    { 
        Value = true;
    }
}
情痴 2024-11-12 05:33:38

目前的默认值为false。要使其为 true,请在构造函数中设置它。

public class Whatever : IWhatever 
{
   public bool Value { get; set; }
   public Whatever()
   {
       this.Value = true;
   }
}

The default value right now is false. To make it true, set it in the constructor.

public class Whatever : IWhatever 
{
   public bool Value { get; set; }
   public Whatever()
   {
       this.Value = true;
   }
}
乄_柒ぐ汐 2024-11-12 05:33:38

默认情况下,Value 将为false,但它可以在构造函数中初始化。

By default Value would be false but it can be initialized in the constructor.

落花随流水 2024-11-12 05:33:38

您不能将 Value 设置为除属性中数据类型本身的默认值之外的任何其他默认值。您需要在 Whatever 的构造函数中分配默认值。

You can not set Value to any other default value than the default value of the datatype itself at the property. You need to assign the default value in the constructor of Whatever.

我的影子我的梦 2024-11-12 05:33:38

您可以在构造函数中设置默认值。

//constructor
public Whatever()
{
   Value = true;
}

public bool Value { get; set; }

顺便说一句 - 使用自动属性,您仍然有一个支持字段,它只是由编译器为您生成(语法糖)。

You can set a default value in the constructor.

//constructor
public Whatever()
{
   Value = true;
}

public bool Value { get; set; }

By the way - with automatic properties, you still have a backing field, it just gets generated for your by the compiler (syntactic sugar).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文