wake-up-neo.net

Wie kann ich meine String-Eigenschaft auf null setzen?

Ich möchte den zweiten Vornamen der Person optional machen. Ich habe den ersten Ansatz mit C # .net-Code verwendet. Für Integer-Datentypen ist es einfach, indem Sie ? Operator in nullable zu machen. Ich suche nach einer Möglichkeit, meine Stichvariable auf null zu setzen. Ich habe versucht zu suchen, konnte aber keinen Weg finden, es nullbar zu machen.

Unten ist mein Code. Bitte schlagen Sie mir vor, wie ich es nullbar machen kann.

public class ChildrenInfo
{
    [Key]
    public int ChidrenID { get; set; }

    [Required]
    [Display(Name ="First Name")]
    [StringLength(50,ErrorMessage ="First Name cannot exceed more than 50 characters")]
    [RegularExpression(@"^[A-Z]+[a-z]*$",ErrorMessage ="Name cannot have special character,numbers or space")]
    [Column("FName")]
    public string CFName { get; set; }

    [Display(Name ="Middle Name")]
    [RegularExpression(@"^[A-Z]+[a-z]*$",ErrorMessage ="Middle Name cannot have special character,numbers or space")]
    [StringLength(35,ErrorMessage ="Middle Name cannot have more than 35 characters")]
    [Column("MName")]
    public string? CMName { get; set; }
}   
39

String ist ein Referenztyp und immer nullwertfähig. Sie müssen nichts Besonderes tun. Die Angabe, dass ein Typ nullwertfähig ist, ist nur für Werttypen erforderlich.

98
aw04

System.String ist ein Referenztyp, so dass Sie nichts Ähnliches tun müssen

Nullable<string>

Es hat bereits einen Nullwert (die Nullreferenz):

string x = null; // No problems here
8
Kashif Mustafa

Zeichenfolgen sind in C # ohnehin nullfähig, da es sich um Referenztypen handelt. Sie können einfach public string CMName { get; set; } und Sie können es auf null setzen.

5
Tim

Wie andere bereits betont haben, kann eine Zeichenfolge in C # immer auf Null gesetzt werden. Ich vermute, Sie stellen die Frage, weil Sie den zweiten Vornamen nicht als null oder leer lassen können? Ich vermute, das Problem liegt bei Ihren Validierungsattributen, höchstwahrscheinlich bei der RegEx. Ich bin nicht in der Lage, RegEx in meinem Kopf vollständig zu analysieren, aber ich denke Ihre RegEx besteht darauf, dass das erste Zeichen vorhanden ist. Ich könnte mich irren - RegEx ist schwer. Versuchen Sie in jedem Fall, Ihre Validierungsattribute zu kommentieren und zu überprüfen, ob sie funktionieren. Fügen Sie sie dann einzeln wieder hinzu.

1
Frans

nachdem c # 8. jetzt veröffentlicht wurde, können Sie Referenztypen auch nullable machen. Dazu müssen Sie hinzufügen

#nullable enable

funktion über Ihren Namespace. Es ist detailliert hier

zum Beispiel wird so etwas funktionieren:

#nullable enable
namespace TestCSharpEight
{
  public class Developer
  {
    public string FullName { get; set; }
    public string UserName { get; set; }

    public Developer(string fullName)
    {
        FullName = fullName;
        UserName = null;
    }
}}

Sie können auch einen Blick auf diesen netten Artikel von John Skeet werfen, der Einzelheiten erklärt.

1
nzrytmn

string type ist ein Referenztyp, daher kann er standardmäßig auf Null gesetzt werden. Sie können nur Nullable<T> mit Werttypen.

public struct Nullable<T> where T : struct

Dies bedeutet, dass der Typ, der für den generischen Parameter ersetzt wird, ein Werttyp sein muss.

0
Kapol

Sie müssen nichts tun, die Modellbindung übergibt null ohne Probleme an die Variable.

0
Renato Leite

Referenztypen können nicht auf Null gesetzt werden. In einer Nullable-Struktur können nur Werttypen verwendet werden. Durch das Anhängen eines Fragezeichens an einen Wertetypnamen kann es auf null gesetzt werden. Diese beiden Zeilen sind gleich:

int? a = null;
Nullable<int> a = null;
0
Vova