(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren

Compilerfehler CS0313

Visual Studio 2008

Aktualisiert: November 2007

Fehlermeldung

Der Typ "Typ1" kann in dem/r generischen Typ oder Methode "Typ2" nicht als Typparameter "Parametername" verwendet werden. Der Typ "Typ1", der NULL-Werte zulässt, entspricht nicht der Einschränkung von "Typ2". Typen, die NULL-Werte zulassen, können keine Schnittstelleneinschränkungen erfüllen.
The type 'type1' cannot be used as type parameter 'parameter name' in the generic type or method 'type2'. The nullable type 'type1' does not satisfy the constraint of 'type2'. Nullable types cannot satisfy any interface constraints.

Ein Typ, der NULL-Werte zulässt, ist nicht äquivalent zu seinem Gegenstück, das keine NULL-Werte zulässt. Im folgenden Beispiel erfüllt ImplStruct die BaseInterface-Einschränkung, ImplStruct? tut dies jedoch nicht, da Nullable<ImplStruct> kein BaseInterface implementiert.

So beheben Sie diesen Fehler

  • Ausgehend vom folgenden Beispielcode wäre eine Lösung die Angabe einer gewöhnlichen ImplStruct als erstes Typargument im Aufruf von TestMethod. Ändern Sie dann TestMethod, um in der return-Anweisung eine Version von Implstruct zu erstellen, die Null-Werte zulässt:

    return new Nullable<T>(t);
    

Durch den folgenden Code wird der Fehler CS0313 ausgelöst:

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

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft