Getter和Setter不工作

时间:2013-02-01 14:41:53

标签: c# .net

我目前拥有以下类,其中包括getter和setter

public class CustAccount
{
    public string Account { get; set; }        private string account;
    public string AccountType { get; set; }    private string accountType;

    public CustSTIOrder(Account ord)
    {
        account = ord.Account;
        accountType = ord.AccountType;
    }
}

现在我意识到public string Account { get; set; }我不需要声明private string account。无论如何现在我的私有变量account包含值,但是当我使用Account获取值时,我得到一个null。有关为什么我得到null的任何建议?

4 个答案:

答案 0 :(得分:6)

由于您使用的是自动属性,因此您应该使用Account来对该属性进行所有引用。

如果您要使用支持字段,则需要在accountget中设置支持字段set

示例:

public string Account 
{ 
    get { return account; }
    set { account = value; }
}        
private string account;

自动属性的使用示例:

public CustSTIOrder(Account ord)
{
    Account = ord.Account;
    // the rest
}

答案 1 :(得分:4)

私有字段需要在属性中使用,否则您将获得具有不同后备存储的auto-implemented property

public class CustAccount
{
    private string account;
    public string Account { get {return account;} set{account = value;} }        
    private string accountType;
    public string AccountType { get{return accountType;} set{accountType = value;} }  

    public CustSTIOrder(Account ord)
    {
        account = ord.Account;
        accountType = ord.AccountType;
    }
}

答案 2 :(得分:3)

您必须将字段Account与字段account

相关联
private string account;
public string Account
{
   get {return this.account;}
   set {this.account = value;}
}

答案 3 :(得分:2)

请勿使用account,直接使用该属性:

public class CustAccount
{
    public string Account { get; set; }        
    public string AccountType { get; set; }

    public CustSTIOrder(Account ord)
    {
        Account = ord.Account;
        AccountType = ord.AccountType;
    }
}

这些自动属性在内部由一个字段支持,因此您不必编写那些简单的代码。