4

我目前有以下带有 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 的任何建议?

4

4 回答 4

6

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

如果您希望使用支持字段,那么您需要在and中有支持字段 ( account) 。getset

例子:

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

auto 属性的使用示例:

public CustSTIOrder(Account ord)
{
    Account = ord.Account;
    // the rest
}
于 2013-02-01T14:44:01.077 回答
4

需要在属性中使用私有字段,否则您将获得具有不同后备存储的自动实现的属性。

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;
    }
}
于 2013-02-01T14:43:36.143 回答
3

您必须将属性Account与字段连接account

private string account;
public string Account
{
   get {return this.account;}
   set {this.account = value;}
}
于 2013-02-01T14:43:33.883 回答
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;
    }
}

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

于 2013-02-01T14:44:16.673 回答