valores valor validar utilice tipo tener que puede operator operador objeto net debe convertir comprobar acepte acepta c# asp.net-mvc model-view-controller data-annotations

valor - operador ?? c#



cómo hacer que el tipo de cadena sea nullable (7)

Quiero hacer opcional el segundo nombre de la persona. He estado usando el código de C # .net por primera vez. Para datos de tipo entero es fácil simplemente usando "?" Operador para hacer en nullable. Estoy buscando una manera de hacer que mi variable de picadura sea anulable. Traté de buscar, pero no pude encontrar la manera de hacerlo anulable.

A continuación se muestra mi código. Por favor, sugiéreme cómo hacerlo anulable.

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; } }


Como han señalado otros, la cadena siempre es anulable en C #. Sospecho que está haciendo la pregunta porque no puede dejar el segundo nombre como nulo o en blanco. Sospecho que el problema es con sus atributos de validación, probablemente el RegEx. No puedo analizar completamente RegEx en mi cabeza, pero creo que su RegEx insiste en que el primer personaje esté presente. Podría estar equivocado - RegEx es difícil. En cualquier caso, intente comentar sus atributos de validación y ver si funciona, luego agréguelos de uno en uno.


La cadena es un tipo de referencia y siempre acepta nulos, no necesita hacer nada especial. Especificar que un tipo es anulable es necesario solo para los tipos de valor.


Las cadenas son anulables en C # de todos modos porque son tipos de referencia. Puedes usar public string CMName { get; set; } public string CMName { get; set; } public string CMName { get; set; } y podrás establecerlo en nulo.


No es posible hacer tipos de referencia Nullable. Solo los tipos de valor se pueden utilizar en una estructura anulable. Anexar un signo de interrogación a un nombre de tipo de valor lo hace anulable. Estas dos líneas son las mismas:

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


No necesita hacer nada, el enlace de modelo pasará de forma nula a variable sin problemas.


System.String es un tipo de referencia por lo que no necesita hacer nada como

Nullable<string>

Ya tiene un valor nulo (la referencia nula):

string x = null; // No problems here


string tipo de string es un tipo de referencia, por lo que es anulable de forma predeterminada. Solo puede utilizar Nullable<T> con tipos de valor.

public struct Nullable<T> where T : struct

Lo que significa que cualquiera que sea el tipo reemplazado por el parámetro genérico, debe ser un tipo de valor.