private string? typeOfContract
{
get { return (string?)ViewState["typeOfContract"]; }
set { ViewState["typeOfContract"] = value; }
}
Später im Code benutze ich es so:
typeOfContract = Request.QueryString["type"];
Bei der Zeilenerklärung wird folgende Fehlermeldung typeOfContract
angezeigt:
Der Typ 'string' muss ein nicht nullbarer Werttyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode 'System.Nullable <T>' zu verwenden.
Irgendwelche Ideen? Grundsätzlich möchte ich sicherstellen, dass "type"
in der vorhanden ist, QueryString
bevor eine Aktion ausgeführt wird.
string?
, um der Welt mitzuteilen, dass diese Zeichenfolge null sein kann. Ref: youtube.com/watch?v=VdC0aoa7ungDu machst es kompliziert.
string
ist bereits nullbar. Sie brauchen nicht zu machen mehr nullable. Nehmen Sie den?
auf dem Grundstück befindlichen Typ heraus.quelle
Zeichenfolge kann nicht der Parameter für Nullable sein, da Zeichenfolge kein Werttyp ist. String ist ein Referenztyp.
ist eine sehr gültige Aussage und muss nicht null gemacht werden.
sollte wegen des Schlüsselworts as funktionieren .
quelle
String ist ein Referenztyp, daher müssen (und können) Sie ihn
Nullable<T>
hier nicht verwenden . Deklarieren Sie einfach typeOfContract als Zeichenfolge und suchen Sie einfach nach null, nachdem Sie es aus der Abfragezeichenfolge abgerufen haben. Oder verwenden Sie String.IsNullOrEmpty, wenn Sie leere Zeichenfolgenwerte wie null behandeln möchten.quelle
Verwenden Sie für nullable
?
alle C # -Primitive mit Ausnahme der Zeichenfolge.Die folgende Seite enthält eine Liste der C # -Primitive : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx
quelle
Bitte beachten Sie, dass in der kommenden Version von C #, die 8 ist, die Antworten nicht wahr sind.
All the reference types are non-nullable by default
und Sie können tatsächlich Folgendes tun:Jedoch,
Das Wichtigste hier ist, die Absicht Ihres Codes zu zeigen. Wenn die "Absicht" ist, dass der Referenztyp null sein kann, markieren Sie ihn, damit die Zuweisung eines Nullwerts zu einem nicht nullbaren Wert zu einer Compilerwarnung führen würde.
Mehr Info
Tun Sie es dem Moderator, der alle Antworten löscht, nicht. Ich bin der festen Überzeugung, dass diese Antwort einen Mehrwert bietet und das Löschen einfach jemanden davon abhält, zu wissen, was gerade richtig ist. Da Sie alle Antworten gelöscht haben, poste ich die Antwort hier erneut. Der Link, der bezüglich "Duplikate" gesendet wurde, ist einfach eine Öffnung für einige Leute und ich denke nicht, dass es eine offizielle Empfehlung ist.
quelle