0

C# の get set アクセサーについて質問があります。

{
   private string _mvalue
   public string MyValue 
   {
       get
       {
           return mvalue;
       }
       set
       {
           _mvalue = value;
       }
}

ここで、_mvalue はプライベートです。クラス外からアクセスできないようにプライベートにしました。しかし、ここでも、このプライベート変数に対してプロパティ 'MyValue' を作成しました。プロパティを使用して、プライベート変数にアクセスできます。ですから、変数の非公開性について妥協しているとは思いませんか。つまり、変数はプライベートであることを意図しています。しかし、プロパティの助けを借りて、部外者はまだこの変数にアクセスできます

4

4 に答える 4

1

通常、値の設定または取得中に追加の操作を行いたい場合は、プロパティのプライベート変数を使用します。たとえば、私は常に割り当てられた値に 5 を掛けたいと思っています。その場合、次のようなものを使用できます。

public int A
{
   get
   {
      return a;
   }
   set 
  {
     a=value*5;
  }
} 

ただし、その場合にクラスの外部からアクセスする必要がある値を格納するだけの場合は、以下のようにプライベート変数を使用せずにプロパティを記述できます。

 public int A
 {
   get;
   set;
 } 

値のみを公開したいが、誰も値をクラス外に設定してはならない場合は、設定をプライベートにすることもできます。

常にプロパティはクラス外の値を公開することですが、どのように書きたいかはロジックによって異なります。その中でプライベート変数を使用するか、必要としません。通常、プライベート変数は、Wpf にバインドするときにプロパティと共に使用されます。コントロール (MVVM) を実装して INotifyPropertyChanged を実装します。

get または set でカスタム ロジックを使用せずにプロパティでプライベート変数を使用する場合、それは不適切なプログラミング スタイルであり、プライベート メンバーをクラスの外に公開するようなものです。

于 2013-10-21T02:44:06.877 に答える
0

まず、プライベート変数「_mvalue」はプライベートであるため、外部からアクセスできません。第二に、「MyValue」を本当に保護したい場合、つまり部外者が「Get」プロパティにしかアクセスできない場合は、「set」でプライベート キーワードを使用します。

private string _mvalue;    
public string MyValue     
{
        get
       {
           return _mvalue;
       }
       private set
       {
           _mvalue = value;
       }   

}
于 2014-09-11T12:48:03.500 に答える