0

私はC#が初めてで、いくつかの演習を行うためにコードを書いています。私が驚いたのは、C# クラスで未定義のメンバー変数を定義済みのように使用できることです。以下は私のコードです。クラス Person では、「myName」と「myAge」のみを定義しましたが、メンバ変数「Name」と「Age」は問題なく使用できます。コードをコンパイルし、実行可能ファイルを実行できます。「名前」と「年齢」を定義せずに使用できる理由を教えてもらえますか? どうもありがとう、

C# コード

====================================== システムの使用;

namespace prj01
{
class Person
{
    private string myName = "N/A";
    private int myAge = 0;

    public string Name
    {
        get
        {
            return myName;
        }
        set
        {
            myName = value;
        }
    }

    public int Age
    {
        get
        {
            return myAge;
        }
        set
        {
            myAge = value;
        }
    }

    public override string ToString()
    {
        return "Name = " + Name + ", Age = " + Age;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // property
        Console.WriteLine("Simple Properties");

        Person person01 = new Person();
        Console.WriteLine("Person details - {0}", person01);
        person01.Name = "Joe";  // Why can I use "Name"?
        person01.Age = 99;      // Why is "Age" accessible and usable?
        Console.WriteLine("Person details - {0}", person01);

        Console.ReadLine();
    }
}
}

======================================

4

3 に答える 3

2

あなたはそれらを定義しました。ここに:

public string Name
{
    get
    {
        return myName;
    }
    set
    {
        myName = value;
    }
}

public int Age
{
    get
    {
        return myAge;
    }
    set
    {
        myAge = value;
    }
}

これらは、.NET クラスでは「プロパティ」と呼ばれます。現在のコードでは、それらは基本的に「パススルー」プロパティであり、メンバー変数へのアクセスを委任するだけです。それらは、これらのメンバー変数をラップする getter および setter メソッドにコンパイルされます。

于 2013-09-17T23:40:38.507 に答える
0

.Net クラスは 2 種類のデータ メンバーを公開します

1>フィールド:

あなたの例では、それらは myName と myAge です。これらはプライベートであるため、クラスメンバー内でのみ使用できます。

2>プロパティ あなたのクラスでは、名前と年齢です。それらは公開されているため、クラス内外からアクセスできます。プロパティを使用すると、ゲッターおよび/またはセッターを実行できます。ゲッターを使用すると、プロパティから値を読み取ることができます。例:

人 person01 = 新しい人();

int xyz = person01.Age; // 内部で person01.Age.get() を呼び出しています。

セッターは、プロパティの設定値を有効にします。

人 person01 = 新しい人();

person01.Age = 2;// これは内部で person01.Age.set(2) を呼び出しています。

これが明確になることを願っています。

于 2013-09-17T23:51:14.307 に答える