Nullable Eigenschaft in generischer Schnittstelle [Duplikat]
Posted: 03 Jun 2025, 11:03
Ich habe einige der anderen Fragen zum Thema nullierbare Typen in Generika gelesen und verstehe immer noch nicht, warum MinmaxBase und myintdecl kompilieren und YourIntdecl nicht. 'Iminmaxdecl.MinValue'. 'YourIntdecl.minValue' kann 'IminmaxDecl.MinValue' nicht implementieren, da es nicht den passenden Rückgabetyp 'Short' enthält. Int16 -Typ Param), aber mit der Einschränkung erhalte ich diesen Fehler: < /p>
Der Typ 'Short?' Kann nicht als Typparameter 'T' im generischen Typ oder in der Methode 'iminmaxdecl' verwendet werden. Der nullbare Typ 'kurz?' erfüllt nicht die Einschränkung von 'System.icompable'. Nullbare Typen können keine Schnittstellenbeschränkungen erfüllen.
Der Typ 'Short?' Kann nicht als Typparameter 'T' im generischen Typ oder in der Methode 'iminmaxdecl' verwendet werden. Der nullbare Typ 'kurz?' erfüllt nicht die Einschränkung von 'System.icompable'. Nullbare Typen können keine Schnittstellenbeschränkungen erfüllen.
Code: Select all
public interface IMinMaxDecl where T : IComparable
{
T? MinValue { get; set; } // needs to be nullable because it is optional
T? MaxValue { get; set; } // needs to be nullable because it is optional
}
public abstract class MinMaxBase : IMinMaxDecl where T : IComparable
{
public T? MinValue { get; set; }
public T? MaxValue { get; set; }
}
public class MyIntDecl : MinMaxBase; // compiles fine
public class YourIntDecl : IMinMaxDecl
{
public Int16? MinValue { get; set; }
public Int16? MaxValue { get; set; }
}