閱讀英文

共用方式為


編譯器錯誤 CS0313

類型 'type1' 不能作為泛型類型或方法 'type2' 中的類型參數 'parameter name'。 可為 Null 的類型 'type1' 無法滿足 'type2' 的條件約束。 可為 Null 的類型無法滿足任何介面條件約束。

可為 Null 的實值型別不等於其不可為 Null 的對等項目。 在下列範例中, ImplStruct 滿足 BaseInterface 條件約束,但 ImplStruct? 不滿足,因為 Nullable<ImplStruct> 未實作 BaseInterface

更正這個錯誤

  1. 使用下面的程式碼作為範例,其中一種解決方案是指定一般 ImplStruct 作為 TestMethod呼叫中的第一個類型引數。 然後,修改 TestMethod ,以在其傳回陳述式中建立可為 Null 的 Implstruct 版本:

    return new Nullable<T>(t);  
    

範例

下列程式碼會產生 CS0313:

// cs0313.cs  
public interface BaseInterface { }  
public struct ImplStruct : BaseInterface { }  
  
public class TestClass  
{  
    public T? TestMethod<T, U>(T t) where T : struct, U  
    {  
        return t;  
    }  
}  
  
public class NullableTest  
{  
    public static void Run()  
    {  
  
        TestClass tc = new TestClass();  
        tc.TestMethod<ImplStruct?, BaseInterface>(new ImplStruct?()); // CS0313  
    }  
    public static void Main()  
    { }  
}  

另請參閱