編譯器錯誤 CS0304
更新:2007 年 11 月
錯誤訊息
無法建立變數型別 'type' 的執行個體,因為它沒有 new() 條件約束
如果您使用 new 建立型別變數的執行個體,而該型別變數並未指定 new() 條件約束,便會發生這個錯誤。您不能使用 new 直接叫用 (Invoke) 未知型別的建構函式,除非使用 new() 條件約束確保預設建構函式 (Constructor) 存在。如果您無法使用 new 條件約束,請考慮使用 typeof 運算式存取想要的建構函式。
下列範例會產生 CS0304:
// CS0304.cs
// compile with: /target:library
class C<T>
{
T t = new T(); // CS0304
}
類別方法中亦不允許使用這種形式的 new 陳述式︰
// CS0304_2.cs
// compile with: /target:library
class C<T>
{
public void f()
{
T t = new T(); // CS0304
}
}