は同じクラスの下の「混乱」クラスの2つのメソッドですか?public T GetMyClass <T>()T:MyClass、new(){/ *は無意味ですか? * /}
class MyClass
{
public override string ToString()
{
return "I am confused now";
}
}
class Confused
{
public MyClass GetMyClass()
{
return new MyClass();
}
public T GetMyClass<T>() where T : MyClass, new()
{
return System.Activator.CreateInstance<T>();
}
}
class Program
{
static void Main()
{
Confused c = new Confused();
System.Console.WriteLine(c.GetMyClass());
System.Console.WriteLine(c.GetMyClass<MyClass>());
}
}
彼らは別のILを生成していますが、ジェネリックを書く場合は同僚のうちの一体を混同する以外に「まっすぐ」バージョン:)
私の知る限り、それらは(.NETでは)ありません。 http://stackoverflow.com/questions/6127855/why-is-this-generic-not-resolved-at-compile-time/6128454#6128454も参照してください。 –