Lezen in het Engels

Delen via


Compilerfout CS0313

Het type 'type1' kan niet worden gebruikt als typeparameter 'parameternaam' in het algemene type of methode 'type2'. Het null-type 'type1' voldoet niet aan de beperking van 'type2'. Null-typen kunnen niet voldoen aan interfacebeperkingen.

Een waardetype dat null kan worden gebruikt, is niet gelijk aan zijn niet-null-equivalent. In het volgende voorbeeld voldoet aan de beperking, ImplStruct maar ImplStruct? niet omdat Nullable<ImplStruct> deze niet wordt geïmplementeerdBaseInterface.BaseInterface

Deze fout corrigeren

  1. Als u de volgende code als voorbeeld gebruikt, moet u een gewoon ImplStruct argument opgeven als het eerste type argument in de aanroep naar TestMethod. Wijzig TestMethod vervolgens om een null-versie van Implstruct in de retourinstructie te maken:

    return new Nullable<T>(t);  
    

Opmerking

Met de volgende code wordt CS0313 gegenereerd:

// 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()  
    { }  
}  

Zie ook