默认值C#class

时间:2015-07-31 14:39:39

标签: c#

大家好我在控制器中有一个功能,我收到一个表单的信息,实际上我有这个代码:

public Actionresult functionOne(string a, string b, string c = "foo" )

我尝试将其转换为类似

的类
public class bar
{
    public string a {get;set;}
    public string b {get;set;}
    public string c {get;set;}
}

并将其作为对象接收

 public Actionresult functionOne(bar b)

另外,我尝试将默认值设置为' c'但是没有用,我试过了:

public class bar
{
    public string a {get;set;}
    public string b {get;set;}
    [System.ComponentModel.DefaultValue("foo")]
    public string c {get;set;}
}

没有发生任何事情,我收到null

我也试过

public class bar
{
    public string a {get;set;}
    public string b {get;set;}
    public string c 
    {
        get
        {
            return  c;
        }
        set
        {
            c="foo"; //I also tried with value
        }
    }
}

我该怎么做才能写出这个默认值?

感谢。

4 个答案:

答案 0 :(得分:17)

如果您使用的是 C#6 ,则可以执行以下操作:

public class Bar {
    public string a { get; set; }
    public string b { get; set; }
    public string c { get; set; } = "foo";
}

否则你可以这样做:

public class Bar {
    public string a { get; set; }
    public string b { get; set; }
    private string _c = "foo";
    public string c
    {
        get
        {
            return _c;
        }
        set
        {
            _c = value;
        }
    }
}

答案 1 :(得分:6)

1)使用对象的构造函数:

public class bar
{
    public bar() 
    {
       c = "foo";
    }

    public string a {get;set;}
    public string b {get;set;}
    public string c {get;set;}
}

2)利用新的自动属性默认值。 Note that this is for C# 6+

public class bar
{

    public string a {get;set;}
    public string b {get;set;}
    public string c {get;set;} = "foo";
}

3)使用支持字段

public class bar
{
    var _c = "foo";
    public string a {get;set;}
    public string b {get;set;}
    public string c {
       get {return _c;} 
       set {_c = value;}
    }
}

4)使用Null Coalescing Operator检查

public class bar
    {
        string _c = null;
        public string a {get;set;}
        public string b {get;set;}
        public string c {
           get {return _c ?? "foo";} 
           set {_c = value;}
        }
    }

答案 2 :(得分:4)

您是否尝试过设置C值的默认构造函数?

public class Bar
{
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }

    public Bar()
    {
        C = "foo";
    }
}

答案 3 :(得分:1)

您可以在构造函数

中指定默认值
public class bar
{
    public bar()
    {
        this.c = "foo";
    }

    public string a {get;set;}
    public string b {get;set;}
    public string c {get;set;}
}

每当创建bar对象时,将调用构造函数,并使用" foo"初始化c

稍后当调用其他方法c时,其值将更新为

public class bar
{
    public bar()
    {
        this.c = "foo";
    }

    public string a {get;set;}
    public string b {get;set;}
    public string c {get;set;}

    public void UpdadateValueofC(string updatedvalueofc)
    {
        this.c = updatedvalueofc;
    }
}