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.
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; }
}
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.[code]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; } } [/code]
In meinem C#-WPF-Projekt versuche ich, mit der Kurzschriftfunktion nullable short einen Wert zuzuweisen:
short? var = (textbox.Text.Length > 0) ? short.Parse(textbox.Text) : null;
In C#, wenn NULL-fähige Objekte wie Decimal?, Int? usw. vorhanden sind. Während NULL-Prüfungen durchgeführt werden, aber mit vorzeitigem Stoppen.
Der Compiler verfolgt nicht die NULL-Zulässigkeit...
Kann jemand erklären, warum das erlaubt ist:
class A1
{
public virtual T? F1(T? t) where T : struct { throw new NotImplementedException(); }
public virtual T? F1(T? t) where T : class { throw new...
In meiner Datenbank habe ich eine Tabelle:
CREATE TABLE .
(
INT NOT NULL IDENTITY(1, 1),
NVARCHAR(100) NOT NULL,
NVARCHAR(100) NOT NULL,
NVARCHAR(max) NOT NULL,