c# 中的可空类型是啥?
Posted
技术标签:
【中文标题】c# 中的可空类型是啥?【英文标题】:What is nullable type in c#?c# 中的可空类型是什么? 【发布时间】:2022-01-13 21:02:44 【问题描述】:什么时候我们必须在 C#.net 中使用 nullable 类型?谁能举例说明一下。
【问题讨论】:
c-sharpcorner.com/UploadFile/PashuSX/… 【参考方案1】:Nullable 类型(When to use nullable types) 是可以将 null 作为值的值类型。它的默认值为null
,这意味着您没有为其赋值。值类型的示例有 int、float、double、DateTime 等。这些类型具有这些默认值
int x = 0;
DateTime d = DateTime.MinValue;
float y = 0;
对于 Nullable 替代方案,上述任何一项的默认值为 null
int? x = null; //no value
DateTime? d = null; //no value
这使它们表现得像引用类型,例如对象,字符串
string s = null;
object o = null;
它们在处理来自数据库的值时非常有用,当从您的表返回的值是NULL
时。想象一下您的数据库表中的一个整数值可能为 NULL,如果 c# 变量不可为空 - 常规整数,则只能用 0
表示。
另外,想象一个EndDate
列,其值直到将来的实际时间才确定。这可以在数据库中设置为 NULL,但您需要一个可为空的类型来将其存储在 C#中
DateTime StartDate = DateTime.Today;
DateTime EndDate? = null; //we don't know yet
【讨论】:
【参考方案2】:来自:http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx
Nullable 类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型的正常值范围,外加一个额外的空值。例如,一个 Nullable
class NullableExample
static void Main()
int? num = null;
if (num.HasValue == true)
System.Console.WriteLine("num = " + num.Value);
else
System.Console.WriteLine("num = Null");
//y is set to zero
int y = num.GetValueOrDefault();
// num.Value throws an InvalidOperationException if num.HasValue is false
try
y = num.Value;
catch (System.InvalidOperationException e)
System.Console.WriteLine(e.Message);
【讨论】:
【参考方案3】:什么时候我们必须在 C#.net 中使用可为空的类型?
假设有一个整数变量id
代表一个特定的id
。
您可以存储1
、44
或其他任何内容。但是如果您不知道 id 怎么办。您不能只存储-1
或0
。您可能正在考虑分配null
但通常null
不能分配给值类型。
int id=null;//error
Nullable type
使您能够做到这一点。
像int,double,char..
这样的值类型不能表示为NULL
值。
要在值类型中表示null
,您必须使用nullable type
..
表示为值类型后跟?
int? id=null;
翻译成
Nullable<int> id=new Nullable<int>();
可空类型的默认值为null
。
【讨论】:
【参考方案4】:Nullable 类型是 C#2.0 中引入的新概念,它允许用户将 null 值分配给 C# 语言的原始数据类型。这里重要的是 Nullable 类型是 Structure 类型。
博文:Nullable type -- Why we need Nullable types in programming language ?
【讨论】:
有点不准确,我想说Nullable<T>
是一个包装器类型,它允许值类型的空值(或“可选”)语义。它不仅适用于原始类型,而且将null
分配给可空类型实际上是语法糖。 null
Nullable<T>
并不是真正意义上的 null
。
请先在 Blogspot 上修正您的语法,然后再将其链接到 SO。如果因为语法不好没有人能理解你的解释,那还有什么意义呢?以上是关于c# 中的可空类型是啥?的主要内容,如果未能解决你的问题,请参考以下文章