C# 可空结构
我阅读并理解其中的大部分内容。但我不知道人们何时以及为什么会使用它。Nullable的用法非常广泛。例如,假设您有一个查询,返回特定用户在博客上的最后一篇文章的id:C# 可空结构,c#,structure,nullable,C#,Structure,Nullable,我阅读并理解其中的大部分内容。但我不知道人们何时以及为什么会使用它。Nullable的用法非常广泛。例如,假设您有一个查询,返回特定用户在博客上的最后一篇文章的id: int lastId = User.GetLastPostId(); 如果用户还没有任何post,则该方法返回null并导致异常。解决方案是使用Nullable而不是int来避免错误 int? lastId = User.GetLastPostId(); 在这种情况下,您甚至可以检查是否为null: if(lastId ==
int lastId = User.GetLastPostId();
如果用户还没有任何post,则该方法返回null并导致异常。解决方案是使用Nullable而不是int来避免错误
int? lastId = User.GetLastPostId();
在这种情况下,您甚至可以检查是否为null:
if(lastId == null)
// do something
else
// do something
如上所述,假设您希望在代码中使用struct而不是class。就结构为ValueType而言,它不能接受null值,如果要强制结构接受null值,则应将其定义为可为null
Struct Person
{
public string Name;
}
Person p = null; // Error
Person? p = null; // Correct
C具有引用类型、类和值类型、结构和内置类型(如int、bool、DateTime等)的概念
引用类型可以有一个空值,表示它们尚未被赋值或没有值
值类型最初没有可空值的概念。它们在某些上下文中具有默认值,例如,类中的int字段具有默认值0。但是他们没有没有没有价值的概念
输入Nullable
Struct Person
{
public string Name;
}
Person p = null; // Error
Person? p = null; // Correct
可为空还是T的简写符号?指示可能有值也可能没有值的值类型
e、 g
还有一些方法可以查询该值是否存在并检索该值:
if (foo.HasValue)
{
int actualValue = foo.Value;
}
在编写连接到数据库的代码时,这一点非常有用。许多数据库中的数字整数列可以配置为可为空。如果C本身没有可为null的类型,则需要跳转处理代码中的null DB值,例如,使用特殊的sentinel值来表示null DB值。可空类型使此操作更加无缝。这将是主观的,主要是基于意见的,也太广泛了,但您能为我指出正确的方向吗@Pikachu请注意,VisualStudio标签是用于IDE问题的。可能范围很广,但我不认为这是主观的还是基于观点的。