編譯器錯誤 CS0310
更新:2007 年 11 月
錯誤訊息
型別 'typename' 必須是具有公用無參數建構函式的非抽象型別,才能在泛型型別或方法 'generic' 中做為參數 'parameter' 使用
泛型型別或方法會在其 where 子句中定義新的條件約束 (Constraint),所以任何型別都必須有公用的無參數建構函式 (Constructor),才能做為該泛型型別或方法的型別引數使用。若要避免這個錯誤,請確認該型別的建構函式正確,或修改泛型型別或方法的條件約束子句。
範例
下列範例會產生 CS0310:
// CS0310.cs
using System;
class G<T> where T : new()
{
T t;
public G()
{
t = new T();
Console.WriteLine(t);
}
}
class B
{
private B() { }
// Try this instead:
// public B() { }
}
class CMain
{
public static void Main()
{
G<B> g = new G<B>(); // CS0310
Console.WriteLine(g.ToString());
}
}