微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可空类型的使用

可空类型也是值类型,但是它是包含null值的值类型,可以像 int? nullable = null 来表示可空类型,在C#中实际上是没有int?这种类型的,对于编译器而言,int?会被编译成Nullable<int>类型,即可空类型。

让我们来看看Nullable<int>中常见的方法属性

1.public bool HasValue { get; }

获取一个值,指示当前的 System.Nullable<T> 对象是否有值;如果当前的 System.Nullable<T> 对象具有值,则为 true;如果当前的System.Nullable<T>对象没有值,则为false。

实例演示:

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

namespace Generic
{
    class Program
    {
        static void Main(string[] args)
        {
            Nullable<int> nullValue = null;
            Nullable<int> notNullValue = 1;
            //HasValue属性指示可空对象是否有值
            Console.WriteLine("nullValue是否为空:{0}",nullValue.HasValue);
            Console.WriteLine("notNullValue是否为空:{0}",notNullValue.HasValue);

            Console.ReadKey();

        }
    }
}

打印结果:

分享图片

2.public T Value { get; }
获取当前的 System.Nullable<T> 值,如果 System.Nullable<T>.HasValue 属性为 true,则为当前 System.Nullable<T> 对象的值;如果System.Nullable<T>.HasValue 属性为 false,则将引发异常。异常: system.invalidOperationException:System.Nullable<T>.HasValue 属性为 false。

实例演示:

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

namespace Generic
{
    class Program
    {
        static void Main(string[] args)
        {
            Nullable<int> nullValue = null;
            Nullable<int> notNullValue = 1;
            if(nullValue.HasValue)
            {
                Console.WriteLine("值为:{0}",nullValue.Value);
            }
            if(notNullValue.HasValue)
            {
                Console.WriteLine("值为:{0}",notNullValue.Value);
            }

            Console.ReadKey();

        }
    }
}

打印结果:

分享图片

3.public override bool Equals(object other);
指示当前 System.Nullable<T> 对象是否等于指定的对象。

实例演示:

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

namespace Generic
{
    class Program
    {
        static void Main(string[] args)
        {
            Nullable<int> nullValue = null;
            Nullable<int> notNullValue = 1;
            if(nullValue.Equals(notNullValue))
            {
                Console.WriteLine("两个值相等");
            }
            else
            {
                Console.WriteLine("两个值不相等");
            }

            Console.ReadKey();

        }
    }
}

打印结果:

4.public T GetValueOrDefault();
检索当前 System.Nullable<T> 对象的值,或该对象的认值,;如果 System.Nullable<T>.HasValue 属性为 true,则为 System.Nullable<T>.Value 属性的值;否则为当前ystem.Nullable<T> 对象的认值。 认值的类型为当前 System.Nullable<T> 对象的类型参数,而认值的值中只包含二进制零。

实例演示:

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

namespace Generic
{
    class Program
    {
        static void Main(string[] args)
        {
            Nullable<int> nullValue = null;
            Nullable<int> notNullValue = 1;
            if(nullValue.HasValue)
            {
                Console.WriteLine("实际值为:{0}",nullValue);
            }
            else
            {
                Console.WriteLine("认值为:{0}",nullValue.GetValueOrDefault());
            }
            if(notNullValue.HasValue)
            {
                Console.WriteLine("实际值为:{0}",notNullValue);
            }
            else
            {
                Console.WriteLine("认值为{0}",notNullValue.GetValueOrDefault());
            }

            Console.ReadKey();

        }
    }
}

打印结果:

分享图片

5.public T GetValueOrDefault(T defaultValue);
检索当前 System.Nullable<T> 对象的值或指定的认值;defaultValue:如果 System.Nullable<T>.HasValue 属性为 false,则为一个返回值。返回结果: 如果 System.Nullable<T>.HasValue 属性为 true,则为 System.Nullable<T>.Value 属性的值;否则为
defaultValue 参数。

实例演示:

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

namespace Generic
{
    class Program
    {
        static void Main(string[] args)
        {
            Nullable<int> nullValue = null;
            Nullable<int> notNullValue = 1;
            if(nullValue.HasValue)
            {
                Console.WriteLine("实际值为:{0}",nullValue);
            }
            else
            {
                Console.WriteLine("认值为:{0}",nullValue.GetValueOrDefault(-1));
            }
            if(notNullValue.HasValue)
            {
                Console.WriteLine("实际值为:{0}",notNullValue);
            }
            else
            {
                Console.WriteLine("认值为{0}",notNullValue.GetValueOrDefault(-2));
            }

            Console.ReadKey();

        }
    }
}

打印结果:

分享图片

6.public override string ToString();
返回当前 System.Nullable<T> 对象的值的文本表示形式;如果 System.Nullable<T>.HasValue 属性为 true,则是当前 System.Nullable<T> 对象的值的文本表示形式;如果System.Nullable<T>.HasValue 属性为 false,则是一个空字符串 ("")。

实例演示:

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

namespace Generic
{
    class Program
    {
        static void Main(string[] args)
        {  
            Nullable<int> value = 1;      
            if(value.HasValue)
            {
                string str = value.Value.ToString();
                Console.WriteLine("值为:{0}",str);
            }
            Console.ReadKey();
        }
    }
}

打印结果:

分享图片

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐