0
Person tempPerson;

Console.WriteLine("Enter the name of this new person.");
tempPerson.Name = Convert.ToString(Console.ReadLine());

Console.WriteLine("Now their age.");
tempPerson.Age = Convert.ToInt32(Console.ReadLine());

peopleList.Add(tempPerson);

RunProgram();

tempPerson.Name、エラー リストに「ローカル変数 'tempPerson' の使用が割り当てられていません。以下は、各 Person オブジェクトが作成されるクラスです。

class Person : PersonCreator
{
    public Person(int initialAge, string initialName)
    {
        initialAge = Age;
        initialName = Name;
    }
    public int Age
    {
        set
        {
            Age = value;
        }
        get
        {
            return Age;
        }
    }
    public string Name
    {
        set
        {
            Name = value;
        }
        get
        {
            return Name;
        }
    }
}   

なぜこれが問題なのかわかりません。tempPerson.Age では全く問題ありません。tempPerson.Age だけでプログラムを実行しても、エラーは発生しません。私の Person クラスに問題はありますか?

4

4 に答える 4

10

tempPersonPersonオブジェクトに初期化されることはないためnull、変数のメンバーを呼び出すと、NullReferenceException.

使用する前に変数を初期化する必要があります。

var tempPerson = new Person();
于 2012-08-30T09:24:17.227 に答える
2

クラスを定義したり、クラス型の変数を宣言したりして、オブジェクトを作成することはありません。クラスで new を呼び出してオブジェクトを作成する必要があります。そうしないと、変数は null で初期化されます。以下をせよ:

Person tempPerson = new Person ();

Console.WriteLine("Enter the name of this new person.");
tempPerson.Name = Convert.ToString(Console.ReadLine());
于 2012-08-30T09:24:10.453 に答える
0

Person クラスが間違っています。次のようにする必要があります。

class Person : PersonCreator
{
    public Person(int initialAge, string initialName)
    {
        Age = initialAge;
        Name = initialName;
    }
    public int Age
    {
        set;
        get;
    }
    public string Name
    {
        set;
        get;
    }
} 
于 2012-08-30T09:29:34.897 に答える
0

変数 tempPerson は宣言されているだけで、初期化されていません。Person のコンストラクターを呼び出す必要がありますが、これには空のコンストラクターが必要です。

Person tempPerson = new Person();

これを解決する別の方法として、次のように実装します。

Console.WriteLine("Enter the name of this new person.");
string name = Convert.ToString(Console.ReadLine());

Console.WriteLine("Now their age.");
string age = Convert.ToInt32(Console.ReadLine());

peopleList.Add(new Person(name, age));
于 2012-08-30T09:29:45.233 に答える