Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Nullable<T>.HasValue Property

Definition

Namespace:
System
Assemblies:
mscorlib.dll, System.Runtime.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Runtime.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Nullable.cs
Source:
Nullable.cs
Source:
Nullable.cs
Source:
Nullable.cs
Source:
Nullable.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

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

public:
 property bool HasValue { bool get(); };
public bool HasValue { get; }
member this.HasValue : bool
Public ReadOnly Property HasValue As Boolean

Property Value

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

Examples

The following example uses the HasValue property of a Nullable<int> (Nullable(Of Integer) in Visual Basic) 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());
 }
 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
open System

let n1 = Nullable 10
let n2 = Nullable()
let mutable n3 = Nullable 20
n3 <- Nullable()
let items = [| n1; n2; n3 |]

for item in items do
 printfn $"Has a value: {item.HasValue}"
 if item.HasValue then
 printfn $"Type: {item.GetType().Name}"
 printfn $"Value: {item.Value}"
 else
 printfn $"Null: {item = Nullable()}"
 printfn $"Default Value: {item.GetValueOrDefault()}"
 printfn ""
// 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
Module Example
 Public Sub Main()
 Dim n1 As New Nullable(Of Integer)(10)
 Dim n2 As Nullable(Of Integer)
 Dim n3 As New Nullable(Of Integer)(20)
 n3 = Nothing
 Dim items() As Nullable(Of Integer) = { n1, n2, n3 }

 For Each item In items
 Console.WriteLine("Has a value: {0}", item.HasValue)
 If item.HasValue Then
 Console.WriteLine("Type: {0}", item.GetType().Name)
 Console.WriteLine("Value: {0}", item.Value)
 Else
 Console.WriteLine("Null: {0}", item Is Nothing)
 Console.WriteLine("Default Value: {0}", item.GetValueOrDefault())
 End If
 Console.WriteLine()
 Next 
 End Sub
End Module
' 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

Remarks

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.

Applies to


Feedback

Was this page helpful?