0

私はクラスtestClassを持っています

public class testClass
{
    public int firstInt;
    public int SecondInt { get; set; }
}

ページ _Default のイベントで、オブジェクトを作成し、プロパティを設定しようとしています。

    protected void Button1_Click(object sender, EventArgs e)
    {
        testClass objtestClass = new testClass();
        objtestClass.firstInt = 1;
        objtestClass.SecondInt = 2;
    }

両方に値が正しく設定されました。ただし、firstInt と SecondInt の動作は異なります。画像を参照してください。

ここに画像の説明を入力

両方が異なる色で表示されるのはなぜですか?

4

4 に答える 4

3

ここ

public class testClass
{
public int firstInt; // a class variable/Field
public int SecondInt { get; set; } // property
}

Variables/Field: 変数は、メモリ位置に直接対応します。単一の宣言ステートメントで変数を定義します。変数は、プロシージャ内で定義され、そのプロシージャ内でのみ使用可能なローカル変数にすることも、モジュール、クラス、または構造体で定義されているがプロシージャ内では定義されていないメンバー変数にすることもできます。メンバー変数はフィールドとも呼ばれます

Properties: プロパティは、モジュール、クラス、または構造体で定義されたデータ要素です。プロパティは、Property ステートメントと End Property ステートメントの間にあるコード ブロックで定義します。コード ブロックには、Get プロシージャ、Set プロシージャ、またはその両方が含まれています。これらのプロシージャは、プロパティ プロシージャまたはプロパティ アクセサーと呼ばれます。プロパティの値を取得または保存するだけでなく、アクセス カウンターの更新などのカスタム アクションを実行することもできます。

説明については、http: //msdn.microsoft.com/en-us/library/sk5e8eth.aspx の Msdn リンクを参照してください。

また、この質問にはすばらしい説明がありますC#のプロパティと変数の違いは何ですか

于 2013-09-21T07:00:10.417 に答える
0

SecondIntの表示方法は、プロパティの記号です。そしてあなたがそれをした方法:

public int SecondInt { get; set; }

プロパティにします。プロパティは簡単に使用できます (setter/getter などを呼び出す必要はありません)。これで、 SecondIntはテストクラスのプロパティとして動作します。

編集:

Visual Studio でリファクタリングすることにより、これを自動的に (または手動で) 行うことができます。

private string m_MyProperty;
public string MyProperty 
{ 
  get { return m_MyProperty; }
  set { m_MyProperty = value; }
}

このようにして、プライベート m_MyProperty 文字列の値を設定および取得するMyPropertyプロパティが作成されました。次のように使用できます。

String x = tstobj.MyProperty;
tstobj.MyProperty = x;
于 2013-09-21T06:52:48.197 に答える
0

「firstInt」はクラス フィールド (変数) であり、「SecondInt」は .NET プロパティです。get メソッドと set メソッドを拡張する必要がある場合は、処理中の SecondInt をクラス内にカプセル化できます。

于 2013-09-21T06:52:53.930 に答える
0

実際、次のようなプロパティを書くと:

public int second {get; set;}

auto プロパティと呼ばれ、C# は次のようなプライベート変数を自動的に使用します。

private int _second;

(最初の変数とよく似ています)

以下のようにあなたの財産を使用してください

public int second{ get{ return _second;} set{ _second = value;} }

Java の getSecond メソッドと setSecond メソッドのようなものです。そのため、プロパティは取得と設定の 2 つの別個のメソッドのようなものであり、データを格納するためのバッキング フィールド (プライベート変数) を持つことができます。クラスの内部データへのアクセスを制御するために使用されるプロパティ。

于 2013-09-21T07:06:49.690 に答える