什么是c#中的可空类型?
什么时候我们必须在C#.net中使用可空类型? 任何人都可以用例子来解释。
可空类型(何时使用可空类型)是可以将null作为值的值类型。 它的默认值为null
意味着您没有为其赋值。 值类型的示例是int,float,double,DateTime等。这些类型具有这些默认值
int x = 0; DateTime d = DateTime.MinValue; float y = 0;
对于Nullable替代方案,上述任何一个的defualt都是null
int? x = null; //no value DateTime? d = null; //no value
这使它们的行为类似于引用类型,例如object,string
string s = null; object o = null;
当从表中返回的值为NULL
时,它们在处理来自数据库的值时非常有用。 想象一下,数据库表中的整数值可能为NULL,如果c#变量不可为空,则只能用0
表示 – 常量整数。
另外,想象一下EndDate
列,其值在未来的实际时间之前不会确定。 可以在DB中将其设置为NULL,但是您需要一个可空类型来存储在C#中
DateTime StartDate = DateTime.Today; DateTime EndDate? = null; //we don't know yet
当我们必须在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
可空类型的默认值为null
。
Nullable类型是C#2.0中引入的新概念,它允许用户为C#语言的原始数据类型赋予空值。 这里不重要的是Nullable类型是结构类型。
BlogPost: Nullable类型 – 为什么我们需要编程语言中的Nullable类型?
来自: http : //msdn.microsoft.com/en-us/library/1t3y8s4s( v = vs。80) .aspx可空类型是System.Nullable结构的实例。 可空类型可以表示其基础值类型的正常值范围,以及额外的空值。 例如,可以为发音为“Nullable of Int32”的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); } } }
在应用程序中假设您需要捕获客户的出生日期,这不是必填字段。 您可以在Customer类中将DateOfBirth属性声明为System.DateTime类型。 由于DateTime是值类型,因此它不能接受空值,因此它将具有一些默认值。
因此,当客户未在出生日期控制中填入显式值时,您需要先将逻辑保存到DB中,然后将默认值视为NULL。 在DB中,您可以将NULL保存到DateTime字段。
为了避免这些不必要的步骤来解释UI和DA层中的值,您可以在C#中使用Nullable类型,这将使代码更具可读性。
要阅读有关可空类型的更多信息,请参阅C#中的Nullable类型并举例说明 。
上述就是C#学习教程:什么是c#中的可空类型?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991811.html