5

私は初心者で、C#の基本を学ぼうとしています。これは非常に些細なことのように聞こえるかもしれませんし、愚かかもしれませんが、それは疑いです。アプリケーションのソースコードの1つを調べているときに、クラス内のコードの一部を見ました。

private string fname;
public string FirstName
{
    get
    {
       return fname
    }
    set
    {
       fname = value;
    }
}

誰かがそれが何を意味するのか教えてもらえますか?クラスを宣言するときにfname、エイリアスを使用してアクセスすることを理解していますFirstName。それが何らかのセキュリティ目的である場合、それでは何ですか?

4

5 に答える 5

6

このコードは、次と同等です。

public string FirstName { get; set; }

これが行うことは、を定義することpropertyです。C#では、プロパティはプライベートのカプセル化を提供しますfields

于 2013-03-17T16:52:49.807 に答える
3

プロパティにカスタムロジックを記述できます。Fe、いくつかの検証:

public string FirstName
{
    get
    {
       return fname;
    }
    set
    {
       if (value.Count(s => Char.IsDigit(s)) > 0)
       {
           throw new Exception("Only letters allowed");
       }
       fname = value;
    }
}
于 2013-03-17T16:55:14.750 に答える
2

fnameはフィールドであり、プライベートな可視性がありますが、FirstNameはパブリックプロパティであるため、クラスの外部で表示され、getメソッドとsetメソッドの内部にロジックを含めることができます。

于 2013-03-17T16:54:29.340 に答える
0

これはプロパティと呼ばれます(MSDNの記事)。それらを使用する理由は、必要に応じて将来クラスの動作を簡単に変更できるように、いくつかのクラスフィールドへのアクセスをカプセル化するためです。

この時点でプロパティはロジックを追加しないため、これはいわゆる自動プロパティとも同等です。

public string FirstName { get; set; }
于 2013-03-17T16:53:54.157 に答える
0

getメソッドとsetメソッドは、アクセサー(ゲッター)およびミューテーター(セッター)と呼ばれます。これらのメソッドは、クラスの外部からのアクセスを許可せずに、オブジェクトの属性にアクセスしてミューテートするために使用されます。変数fnameのアクセス修飾子がプライベートであることを確認してください。これは、クラス内の任意のメソッドからのみアクセスできることを意味します。

また、getメソッドとsetメソッドには通常、外部クラスからメソッドにアクセスできるようにするpublicaccess修飾子を指定する必要があることに注意してください。

于 2013-03-17T16:56:38.733 に答える