Also ich hab da so eine generische Methode:
private T getItem<T>(LinkedList<T> items, GetModes mode) where T : IKoordinate
{
return null; //Fehler!
}
Jedenfalls hatte ich das Problem, dass sie im Fehlerfall auch null zurückgeben kann, was vom Compiler aber angemeckert wurde.
Durch Marco war die Lösung schnell gefunden:
private T getItem<T>(LinkedList<T> items, GetModes mode) where T : class, IKoordinate
{
return null; //OK!
}
Mit der zusätzlichen Bedingung sagt man dem Compiler, dass T eine Klasse sein muss. Eine Klasse darf null sein und damit ist alles in Butter. Nach meinem Verständnis impliziert die Bedingung, dass T das Interface IKoordinate bieten muss, auch, dass T eine Klasse ist, aber vielleicht hab ich auch einen anderen Punkt nicht im “Blickfeld”. Jedenfalls geht der zweite Quellcode!
Danke Marco!
Noch ein kleines Update: Natürlich würde ich für einen Fehlerfall eine Exception werfen und nicht null zurückgeben.
Kurzer Erklärung zum Grund: Auch ein struct kann ein Interface implementieren. Ein struct ist aber kein Referenz Typ, weshalb es nicht NULL sein kann. (z.B. Color oder Point sind structs -> Value- und keine Referenztypen)
aha, dann macht das ganze natürlich sinn. Danke für die info!