为 C# 中可变的属性设置默认值 [重复]

Posted

技术标签:

【中文标题】为 C# 中可变的属性设置默认值 [重复]【英文标题】:Setting a default value for property that is mutable in C# [duplicate] 【发布时间】:2016-02-17 16:32:44 【问题描述】:

我有财产

public int active  get; set; 

我的数据库中的默认值为 1。如果未另行指定,我希望此属性默认为 1

public partial class test

    public int Id  get; set; 
    public string test1  get; set; 
    public int active  get; set; 

我看到在 c# 6 中你可以做到

public int active  get; set;  = 1

但我没有使用 c# 6 :(。 谢谢你的建议。 (对于 c#/OOP 来说非常非常新)

【问题讨论】:

但我没有使用 c# 吗?你的意思是说:但我没有使用 c# 6.0? 无论如何,如果您是6.0之前的版本,请使用构造函数进行初始化。 所以添加一个default constructor 并在那里初始化它。顺便说一句,你真的想使用partial 类吗?如果你需要一个分部类,那是因为一些类定义是自动生成的。是这样吗?如果不是,使用partial 是一种滥用,可能表明一个类承担了太多责任(并且已经变得太大)。对于手写代码,部分定义类只会掩盖代码的意图。 已编辑,未使用 c# 6,抱歉 【参考方案1】:

只需在构造函数中设置即可:

public partial class Test

    public int Id  get; set; 
    public string Test1  get; set; 
    public int Active  get; set; 

    public Test()
    
        Active = 1;
    

我认为这比仅仅为了默认而避免自动实现的属性更简单......

【讨论】:

【参考方案2】:

在构造函数中初始化它:

public partial class Test

    public int Active  get; set; 

    public Test()
    
        Active = 1;
    

【讨论】:

【参考方案3】:
// option 1:  private member
    public partial class test
    
        private int _active = 1;
        public int Id  get; set; 
        public string test1  get; set; 
        public int active 
         
            get return _active;  
            set _active = value;  
        
    

// option 2:  initialize in constructor

    public partial class test
    
        public test()
        
            active = 1;
        
        public int Id  get; set; 
        public string test1  get; set; 
        public int active  get; set; 
    

【讨论】:

太棒了,现在我看到了get set的实用程序,几天前就开始使用c#了 它变得更好了。属性非常强大。你可以做的不仅仅是一个简单的get; set;,甚至不仅仅是一个简单的作业,【参考方案4】:

在 C#6 之前的版本中执行此操作的默认方法要冗长得多,但它只是语法 - 这是等效的:

public class Foo

    private int _bar = 1;
    public int Bar
    
        get  return _bar; 
        set  _bar = value; 
    

【讨论】:

非常感谢,不胜感激

以上是关于为 C# 中可变的属性设置默认值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在C#中如何设置label的默认值

C#中ComboBox设置DrowDownStyle为DropDownList后怎么设置显示默认值?

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

自动属性默认值 [重复]

为属性设置默认值并使其可序列化

如何在 Laravel 模型上设置属性的默认值 [重复]