0

次のコードを変更するにはどうすればよいですか?

var people = new[] {
   new { name = "John", surname = "Smith" },
   new { name = "John", surname = "Doe" },
};

キーワードを使用せずにvar(オブジェクトの初期化子で変数を初期化できるように)、次のような要素にアクセスできるようにするには?:

System.Console.WriteLine(people[0].surname); //John
System.Console.WriteLine(people[1].surname); //Doe
4

4 に答える 4

5

それはいけません; これらのオブジェクトに適切なクラスを定義するか、1つを再利用する必要があります(例Tuple)。

var技術的には、からへの1単語の変更でdynamicもうまくいきますが、もちろんこれはメンバーの本質を劇的に変えるので、想像力の範囲と同等ではありません。

于 2013-01-23T15:25:17.850 に答える
5

モデルを定義します。

public class Person
{
    public string Name { get; set; }
    public string Surname { get; set; }
}

そして、collection of this model

List<Person> people = new List<Person>();
people.Add(new Person { Name = "John", Surname = "Smith" });
people.Add(new Person { Name = "John", Surname = "Doe" });

また:

var people = new List<Person> 
{ 
    new Person { Name = "John", Surname = "Smith" }, 
    new Person { Name = "John", Surname = "Doe" } 
};

そして、あなたはまだすることができます:

System.Console.WriteLine(people[0].Surname); //John
System.Console.WriteLine(people[1].Surname); //Doe
于 2013-01-23T15:25:18.603 に答える
2

まず、そのデータの名前付きタイプを作成する必要があります。

public class Person
{
    public string Name { get; set; }
    public string Surname { get; set; }
}

次に、配列を作成するときにそのタイプを使用します。

People[] people;

//...

people = new People[]{
    new Person{ Name = "John", Surname = "Smith" },
    new Person{ Name = "John", Surname = "Doe" },
};
于 2013-01-23T15:27:06.417 に答える
1

'動的'を使用できます

dynamic people = new[] {
   new { name = "John", surname = "Smith" },
   new { name = "John", surname = "Doe" },
};

そしてそれを呼ぶ

Console.WriteLine(people[0].name);

注-フレームワーク4.0以降で動作しますが、すでに説明した警告も含まれています。

于 2013-01-23T15:30:22.660 に答える