Sab*_*rma 44 c# asp.net-mvc entity-framework ef-migrations
我想让人的中间名可选.我一直在使用C#.net代码的第一种方法.对于整数数据类型,只需使用?
运算符使其可以为空即可.我正在寻找一种让我的sting变量可以为空的方法.我试图搜索但找不到让它可以为空的方法.
以下是我的代码.请建议我如何让它可以为空.
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; }
}
Run Code Online (Sandbox Code Playgroud)
aw0*_*w04 105
String是一个引用类型,并且始终可以为空,您不需要做任何特殊操作.只有值类型才需要指定类型可为空.
nzr*_*tmn 11
C# 8.0现已发布,因此您也可以将引用类型设为可空。为此,您必须添加
#nullable enable
Run Code Online (Sandbox Code Playgroud)
在您的命名空间上的功能。这里有详细说明
例如,这样的事情将起作用:
#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;
}
}}
Run Code Online (Sandbox Code Playgroud)
你也可以看看John Skeet 的这篇很好的文章,它解释了细节。
System.String是一个引用类型,因此您不需要执行任何操作
Nullable<string>
Run Code Online (Sandbox Code Playgroud)
它已经有一个空值(空引用):
string x = null; // No problems here
Run Code Online (Sandbox Code Playgroud)
字符串在C#中还是可以为空的,因为它们是引用类型。您可以使用public string CMName { get; set; }
并将其设置为null。