默认值C#类

默认值C#类,c#,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(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)
此外,我还尝试将defaultvalue置于“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
        }
    }
}

我该怎么写这个默认值呢?

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

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

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

您可以在构造函数中指定默认值

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

    public string a {get;set;}
    public string b {get;set;}
    public string c {get;set;}
}
无论何时创建
bar
对象,都将调用构造函数,
c
将用“foo”初始化

稍后,当调用其他方法时,
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;
    }
}
1) 使用对象的构造函数:

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

    public string a {get;set;}
    public string b {get;set;}
    public string c {get;set;}
}
2) 利用新的自动属性默认值:

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) 使用支票

如果您使用的是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;
        }
    }
}
否则,您可以执行以下操作:

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;
        }
    }
}

可能在构造函数中放入一个默认值?
[DefaultValue]
属性确实没有任何作用;这意味着设计者能够确定初始化属性的值。Hi。DefaultValueAttribute不会导致使用该属性的值自动初始化成员。必须在代码中设置初始值。DefaultValueAttribute在读取反射中的任何成员为空时对反射有用使用此属性查找或设置默认值。我尝试了使用c#6代码中可以使用的较少的行,但没有使用,另一行很好,谢谢。@TiGreX那么我猜您使用的是c#5或更早版本。