1

JS でしばらく練習した後、C# に移行しました。C# でいくつかのプロパティを持つオブジェクトを作成しようとしています。JSでは、次のようにできます:

var person = {
    fname : "",
    lname : "",
    id    : ""
}

これに似たものを C# で作成したいと考えています。私はいくつかのツッツを見てきましたが、少し混乱しています。クラス、辞書、ハッシュテーブルがあります。どこから始めればよいかわかりません。

コンストラクターを使用せずにそれを行う方法があれば、それを使用したいと思います。値を変更するつもりはなく、コンストラクターを使用するのは面倒です。オブジェクトには 10 個以上のプロパティがあるため、正しい順序で 1 行に入力してください。

4

4 に答える 4

2

既に提供されている回答に加えて、c# は匿名型の両方を許可し、動的型をサポートします。したがって、あなたが与えた例を取り上げると、c# で次のことができます。

匿名タイプ:

var person = new {
    fname = "first",
    lname = "last",
    id    = "123"
};
Console.WriteLine(person.lname);

動的タイプ:

    dynamic anotherPerson = new System.Dynamic.ExpandoObject();

    anotherPerson.FirstName = person.lname;
    Console.WriteLine(anotherPerson.FirstName);

    anotherPerson.PrintPerson = (Action<dynamic>)((p => Console.WriteLine("[{0}] {1}. {2}", p.id, p.lname, p.fname)));
    anotherPerson.PrintPerson(person);

これらの例は少し不自然です。それらが非常に便利になる特定の状況があります。ただし、本当に必要でない限り、厳密に型指定されたクラスを作成することをお勧めします。これらは、コンパイラによって検証できるパブリック インターフェイス コントラクトを提供します。また、ほとんどのシナリオでは、動的型のランタイム コストが大幅に高くなります。

于 2013-08-18T23:00:56.333 に答える
1

C# (4.0 以降) では、名前付きおよびオプションのパラメーター ( http://msdn.microsoft.com/en-us/library/dd264739.aspx ) を使用できるため、クラスを不変に保つことができます。

于 2013-08-18T22:34:39.217 に答える