2017-07-14 1 views
-2

だから私は見たことがあり現在使用しているものと比べてベストプラクティスを理解しようとしています。次のコード例では、クラス内にNOメソッドを持つエンティティクラスがあります。クラスは単なるフィールドリストです。エンティティクラスのパブリックアクセサのプライベート変数。 c#

/// <summary> 
/// AddUserID 
/// </summary> 
public string AddUserIDField = "Add_User_ID"; 
public string AddUserID 
{ 
    get 
    { 
     if (this.Row != null) 
      return (string)mmType.GetNonNullableDbValue(this.Row["Add_User_ID"], 
       "System.String"); 
     else 
      return this._AddUserID; 
    } 
    set 
    { 
     if (this.Row != null) 
      this.Row["Add_User_ID"] = value; 

     this._AddUserID = value; 
    } 
} 

private string _AddUserID; 

ここで使用するプライベート文字列は何ですか?クラス自体の内部では使用されず、アクセスもされません。 AddUserIdへの_AddUserID参照を置き換えることができませんでしたか?

これは私の会社のフレームワークであり、EFではありません。

ご協力いただきありがとうございます。 C#ので

+1

'_AddUserID'は、実際には' AddUserID'が参照する値を格納します。あなたが尋ねる代替えをすると、プロパティは無限再帰で自分自身を呼び出し続けます。 – Steven

+0

あなたのためにその変数を作成するのに十分なほどスマートではありませんか? –

+1

[auto-implementedプロパティ](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties)を使用する場合のみ。 – Steven

答えて

0

、あなたはそれが実際にこのコードを生産しているpublic string MyVar { get; set; }を書く:

// The private variable holding the value of the property 
private string _myVar; 

// The getter and the setter of the property 
public string MyVar { 
    get 
    { 
     return _myVar; 
    } 
    set 
    { 
     _myVar = value; 
    } 
} 

だからプロパティは常に根底にあるプライベート変数を持っています。このプロパティは、単にゲッターとセッターを隠す構文です。それ自体は価値がありません。ほとんどの場合、関連するプライベート変数を記述せずにプロパティを書き込むことができるのは、C#コンパイラが提供する構文的な砂糖だけです(詳細はAuto-Implemented Propertiesを参照してください)。

私たちに提示したコードの場合:コードは特定のゲッターとセッターを使用しているため、通常はプロパティの後ろに隠されているプラ​​イベート変数を明示的に記述する必要があります。

関連する問題