次のような匿名クラスを作成すると、次のことがわかります。
var Employee = new { ID = 5, Name= "Prashant" };
...実行時には次のタイプになります。
<>f__AnonymousType0<int,string>
そのようなクラスに意味のある名前を指定する方法はありますか?
次のような匿名クラスを作成すると、次のことがわかります。
var Employee = new { ID = 5, Name= "Prashant" };
...実行時には次のタイプになります。
<>f__AnonymousType0<int,string>
そのようなクラスに意味のある名前を指定する方法はありますか?
public class Employee {}
目的に反するのは匿名型です。これらのオブジェクトは一時的なものとして設計されています。地獄、プロパティは読み取り専用ですらあります。
申し訳ありませんが、私は賢いお尻です。答えはノーです。匿名型に使用する名前をコンパイラに伝える方法はありません。
実際、コンパイラによって生成された型の名前は、名前付けに不正な文字を使用しているため、アプリケーションで名前の競合が発生することはありません。
public class Employee {
public int ID { get; set; }
public string Name { get; set; }
}
次に、次の構文を使用します
var employee = new Employee { ID = 5, Name = "Prashant" };
名前のある通常のクラスにしますか?
public class Employee
{
public int ID;
public string Name;
}
var Employee = new Employee { ID = 5, Name= "Prashant" };
Java World での答えは、C# には存在しないローカル クラス(メソッドで定義) です。
はい、Anonymous Classを作成しています。クラスに名前を付けたい場合、つまりNot Anonymousの場合は、通常のクラスまたは構造体を宣言します。
定義上、匿名型には名前を付けることができず、コンパイラーが付けた名前だけだと思います。匿名型に関するより意味のある設計時の情報を探している場合は、コンパイラに期待しすぎています。