当前位置:  编程技术>.net/c#/asp.net

C#难点逐个击破(8):可空类型System.Nullable

    来源: 互联网  发布时间:2014-10-14

    本文导语:  null与void null值用来表示数据类型未被赋予任何值,它是一种引用类型;void表示没有类型,或者说是没有任何值。null与void的区别可以认为void是根本没有,而null是一个空箱子,里面什么都没有。 null值只能赋值给引用类型,这...

null与void

null值用来表示数据类型未被赋予任何值,它是一种引用类型;void表示没有类型,或者说是没有任何值。null与void的区别可以认为void是根本没有,而null是一个空箱子,里面什么都没有。

null值只能赋值给引用类型,这里注意到string也是一种引用类型;引用类型在C中称为“指针”,即存放变量位置的内存空间位置。将变量设为null,会显式地设置引用,且它本身不指向任何内存位置;

null值赋给值类型将导致编译错误。

void用于方法值的返回,其本质并不是一个数据类型,它只是用于指出没有数据类型。

System.Nullable

C#中null值不能赋值给值类型,这里的值类型包括struct在内。原因是值类型不能包含引用,null作为一种“无”的引用当然不能被值类型所引用。在实际应用中这样会造成一些问题,假如现在一个数据int类型确实无法确定它的取值。这里就需要使用可空类型。

代码如下:

System.Nullable i = null;
Console.WriteLine(i);

此时即可将int类型的i声明为null类型,同时该程序运行结果将看到无任何数据显示
代码如下:

System.Nullable i = null;
Console.WriteLine(i);

此时即可将int类型的i声明为null类型,同时该程序运行结果将看到无任何数据显示

使用GetType()查看其类型将抛出System.NullReferenceException异常

代码如下:

System.Nullable i = null;
Console.WriteLine( i.GetType());


System.Nullable可简写为T?,如System.Nullable可写作int?。可空类型在ADO.NET编程中大量使用。

另外Nullable类型的实例均拥有HasValue成员与Value成员,其中HasValue为bool类型,表示判断该实例是否有值;Value表示在HasValue有值时实例的取值,在HasVaue为false时使用Value将触发System.InvalidOperationException异常。
代码如下:

int? i = null;
Console.WriteLine(i.HasValue);
Console.WriteLine(i.Value);


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jsp的重点,难点是什么?
  • 上次问问题没人回答!这次再问一个难点的---Servlet可否同时输出图象流和HTML文本?
  • 关于socket编程的一个难点:recv()函数的返回问题!
  • (高分请教)刚接到一个项目,请大家帮我看看我所认为的技术难点该如何解决?Andrew.老weidegong?.....帮帮忙
  • 请有经验的朋友讲讲学习和开发EJB要注意些什么,难点在那里!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3