Compilerfehler CS0315

Aktualisiert: November 2007

Fehlermeldung

Der Typ "Werttyp" kann in dem/r generischen Typ oder Methode "TypoderMethode<T>" nicht als Typparameter "T" verwendet werden. Es ist keine Boxing-Konvertierung von "Werttyp" in "Verweistyp" vorhanden.
The type 'valueType' cannot be used as type parameter 'T' in the generic type or method 'TypeorMethod<T>'. There is no boxing conversion from 'valueType' to 'referenceType'.

Dieser Fehler tritt auf, wenn Sie einen generischen Typ auf eine bestimmte Klasse beschränken und versuchen, eine Instanz dieser Klasse mit einem Werttyp, der nicht implizit darin geschachtelt werden kann, zu erstellen.

So beheben Sie diesen Fehler

  • Eine Lösungsmöglichkeit ist, die Struktur neu als Klasse zu definieren.

Beispiel

Durch das folgende Beispiel wird der Fehler CS0315 ausgelöst:

// cs0315.cs
public class ClassConstraint { }
public struct ViolateClassConstraint { }

public class Gen<T> where T : ClassConstraint
{       
}
public class Test
{
    public static int Main()
    {
        Gen<ViolateClassConstraint> g = new Gen<ViolateClassConstraint>(); //CS0315
        return 1;
    }
}

Siehe auch

Referenz

Einschränkungen für Typparameter (C#-Programmierhandbuch)

Boxing und Unboxing (C#-Programmierhandbuch)