4

現在、ゲッターとセッターを含む次のクラスがあります

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; }これで、 withを宣言する必要がないことに気付きましたprivate string account。とにかく、私のプライベート変数accountには値が含まれていますがAccount、値を取得するために使用するとnullになります。null を取得する理由について何か提案はありますか?

4

4 に答える 4

6

自動プロパティを使用Accountしているため、プロパティへのすべての参照に使用する必要があります。

バッキング フィールドを使用する場合は、バッキング フィールド ( account) をgetandに含める必要がありますset

例:

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 に答える