Nullable<T>.HasValue 属性

定义

获取一个值,该值指示 Nullable<T> 对象是否具有基础类型的有效值。

public bool HasValue { get; }

属性值

如果当前的 true 对象具有值,则为 Nullable<T>;如果当前的 Nullable<T> 对象没有值,则为 false

示例

以下示例使用 HasValue Visual Basic) 对象中 (Nullable(Of Integer)的 属性Nullable<int>来确定它应显示对象的 Value 属性还是应显示其GetValueOrDefault属性。

using System;

public class Example
{
   public static void Main()
   {
      Nullable<int> n1 = new Nullable<int>(10);
      Nullable<int> n2 = null;
      Nullable<int> n3 = new Nullable<int>(20);
      n3 = null;
      Nullable<int>[] items = { n1, n2, n3 };

      foreach (var item in items) {
         Console.WriteLine("Has a value: {0}", item.HasValue);
         if (item.HasValue) {
            Console.WriteLine("Type: {0}", item.GetType().Name);
            Console.WriteLine("Value: {0}", item.Value);
         }
         else {
            Console.WriteLine("Null: {0}", item == null);
            Console.WriteLine("Default Value: {0}", item.GetValueOrDefault());
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       Has a value: True
//       Type: Int32
//       Value: 10
//
//       Has a value: False
//       Null: True
//       Default Value: 0
//
//       Has a value: False
//       Null: True
//       Default Value: 0

注解

HasValue如果 属性为 true,则可以使用 Value 属性访问当前 Nullable<T> 对象的值。 否则,尝试访问其值将 InvalidOperationException 引发异常。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0