44

次のような匿名クラスを作成すると、次のことがわかります。

var Employee = new { ID = 5, Name= "Prashant" };

...実行時には次のタイプになります。

<>f__AnonymousType0<int,string>

そのようなクラスに意味のある名前を指定する方法はありますか?

4

10 に答える 10

129
public class Employee {}

于 2009-04-27T13:10:17.830 に答える
39

目的に反するのは匿名型です。これらのオブジェクトは一時的なものとして設計されています。地獄、プロパティは読み取り専用ですらあります。

申し訳ありませんが、私は賢いお尻です。答えはノーです。匿名型に使用する名前をコンパイラに伝える方法はありません。

実際、コンパイラによって生成された型の名前は、名前付けに不正な文字を使用しているため、アプリケーションで名前の競合が発生することはありません。

于 2009-04-27T13:12:07.747 に答える
36
public class Employee {
    public int ID { get; set; }
    public string Name { get; set; }
}

次に、次の構文を使用します

var employee = new Employee { ID = 5, Name = "Prashant" };
于 2009-04-27T13:12:38.960 に答える
24

名前のある通常のクラスにしますか?

public class Employee
{
    public int ID;
    public string Name;
}


var Employee = new Employee { ID = 5, Name= "Prashant" };
于 2009-04-27T13:10:05.630 に答える
8

Java World での答えは、C# には存在しないローカル クラス(メソッドで定義) です。

于 2011-06-28T22:41:08.907 に答える
4

はい、Anonymous Classを作成しています。クラスに名前を付けたい場合、つまりNot Anonymousの場合は、通常のクラスまたは構造体を宣言します。

于 2009-04-27T13:15:49.390 に答える
2

定義上、匿名型には名前を付けることができず、コンパイラーが付けた名前だけだと思います。匿名型に関するより意味のある設計時の情報を探している場合は、コンパイラに期待しすぎています。

于 2009-04-27T13:14:00.410 に答える