浅谈C# 中的可空值类型 null

 更新时间:2013年12月02日 15:47:53   作者:  
这篇文章主要介绍了C# 中的可空值类型 null,有需要的朋友可以参考一下

C# 不允许把 null 赋给一个值类型的数据。在 C# 中,以下语句是非法的:

复制代码 代码如下:

int a = null;    // 非法 

但是,利用 C# 定义的一个修饰符,可将一个变量声明为一个可空(nullable)值类型。可空值类型在行为上与普通值类型相似,但可以将一个 null 值赋给它。如下所示:

复制代码 代码如下:

int? a = null;      // 合法

当把一个变量定义为可空值类型时,该变量依然可以被赋值为 0,代码如下所示:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 可空类型
{
    class Program
    {
        static void Main(string[] args)
        {
            int? a = null;

            Console.WriteLine("a = {0}", a);
            a = 0;
            Console.WriteLine("a = {0}", a);
        }
    }
}

运行结果为:

可空类型有如下属性:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int? i = null;
            if (!i.HasValue)    // 若 i 包含一个真正的值,则 i.HasValue 为true
            {
                i = 99;
            }
            Console.WriteLine(i.Value); // i 的值
        }
    }
}

// i.HasValue 比 i != null 走了不少冤枉路,i.Value 也比 i 更麻烦
// 但是当使用更加复杂的值类型(struct)来声明可空类型时, .HasValue 和 .Value 就有了优势

相关文章

  • C#/VB.NET 在PDF中添加文件包(Portfolio)的方法

    C#/VB.NET 在PDF中添加文件包(Portfolio)的方法

    这篇文章主要介绍了C#/VB.NET 在PDF中添加文件包(Portfolio)的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-06-06
  • C#判等对象是否相等的方法汇总

    C#判等对象是否相等的方法汇总

    这篇文章主要介绍了C#判等对象是否相等的方法汇总,非常实用,需要的朋友可以参考下
    2014-08-08
  • C#实现绘制鼠标的示例代码

    C#实现绘制鼠标的示例代码

    这篇文章主要为大家详细介绍了如何利用C#实现绘制鼠标的效果,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C#探秘系列(三)——StackTrace,Trim

    C#探秘系列(三)——StackTrace,Trim

    这个系列我们看看C#中有哪些我们知道,但是又不知道怎么用,又或者懒得去了解的东西,比如这篇我们要介绍的StackTrace,Trim
    2014-05-05
  • c# 实现子窗口关闭父窗口也关闭的方法

    c# 实现子窗口关闭父窗口也关闭的方法

    下面小编就为大家带来一篇c# 实现子窗口关闭父窗口也关闭的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • C#编写的艺术字类实例代码

    C#编写的艺术字类实例代码

    本文给大家分享使用纯C#编写的艺术字类实例代码,代码简单易懂,需要的朋友参考下本教程
    2016-03-03
  • C#判断DLL文件是32位还是64位的示例代码

    C#判断DLL文件是32位还是64位的示例代码

    有些时候我们需要判断一下dll文件是32位还是64位,纠结该如何操作呢,下面小编通过实例代码给大家介绍下C#判断DLL文件是32位还是64位,感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • C#选择排序法实例分析

    C#选择排序法实例分析

    这篇文章主要介绍了C#选择排序法,实例分析了C#排序算法的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • 利用C#实现AOP常见的几种方法详解

    利用C#实现AOP常见的几种方法详解

    AOP面向切面编程(Aspect Oriented Programming),是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。下面这篇文章主要给大家介绍了关于利用C#实现AOP常见的几种方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • WPF通过线程使用ProcessBar的方法详解

    WPF通过线程使用ProcessBar的方法详解

    这篇文章主要给大家介绍了关于WPF通过线程使用ProcessBar的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用WPF具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04

最新评论