Nullable<T>.HasValue Property


Gets a value indicating whether the current Nullable<T> object has a valid value of its underlying type.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public bool HasValue { get; }

Property Value

Type: System.Boolean

true if the current Nullable<T> object has a value; false if the current Nullable<T> object has no value.

If the HasValue property is true, the value of the current Nullable<T> object can be accessed with the Value property. Otherwise, attempting to access its value throws an InvalidOperationException exception.

The following example uses the HasValue property of a Nullable<Integer> object to determine whether it should display the object's Value property or its GetValueOrDefault property.

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());
// 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

Universal Windows Platform
Available since 8
.NET Framework
Available since 2.0
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top