You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_1.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_2.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_3.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_4.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_5.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_6.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_7.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/codesnippet/VisualBasic/nullable-value-types_8.vb
Copy file name to clipboardExpand all lines: docs/visual-basic/programming-guide/language-features/data-types/nullable-value-types.md
+9-13Lines changed: 9 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,7 @@
1
1
---
2
2
title: "Nullable Value Types (Visual Basic)"
3
-
ms.custom: ""
4
3
ms.date: 07/20/2015
5
4
ms.prod: .net
6
-
ms.reviewer: ""
7
-
ms.suite: ""
8
5
ms.technology:
9
6
- "devlang-visual-basic"
10
7
ms.topic: "article"
@@ -17,7 +14,6 @@ helpviewer_keywords:
17
14
- "nullable types [Visual Basic]"
18
15
- "data types [Visual Basic], nullable"
19
16
ms.assetid: 9ac3b602-6f96-4e6d-96f7-cd4e81c468a6
20
-
caps.latest.revision: 23
21
17
author: dotnet-bot
22
18
ms.author: dotnetcontent
23
19
---
@@ -26,7 +22,7 @@ Sometimes you work with a value type that does not have a defined value in certa
26
22
27
23
Each nullable type is constructed from the generic <xref:System.Nullable%601> structure. Consider a database that tracks work-related activities. The following example constructs a nullable `Boolean` type and declares a variable of that type. You can write the declaration in three ways:
The variable `ridesBusToWork` can hold a value of `True`, a value of `False`, or no value at all. Its initial default value is no value at all, which in this case could mean that the information has not yet been obtained for this person. In contrast, `False` could mean that the information has been obtained and the person does not ride the bus to work.
32
28
@@ -40,26 +36,26 @@ Sometimes you work with a value type that does not have a defined value in certa
40
36
### Default Values
41
37
When you declare a variable with a nullable type, its <xref:System.Nullable%601.HasValue%2A> property has a default value of `False`. This means that by default the variable has no defined value, instead of the default value of its underlying value type. In the following example, the variable `numberOfChildren` initially has no defined value, even though the default value of the `Integer` type is 0.
A null value is useful to indicate an undefined or unknown value. If `numberOfChildren` had been declared as `Integer`, there would be no value that could indicate that the information is not currently available.
46
42
47
43
### Storing Values
48
44
You store a value in a variable or property of a nullable type in the typical way. The following example assigns a value to the variable `numberOfChildren` declared in the previous example.
If a variable or property of a nullable type contains a defined value, you can cause it to revert to its initial state of not having a value assigned. You do this by setting the variable or property to `Nothing`, as the following example shows.
> Although you can assign `Nothing` to a variable of a nullable type, you cannot test it for `Nothing` by using the equal sign. Comparison that uses the equal sign, `someVar = Nothing`, always evaluates to `Nothing`. You can test the variable's <xref:System.Nullable%601.HasValue%2A> property for `False`, or test by using the `Is` or `IsNot` operator.
58
54
59
55
### Retrieving Values
60
56
To retrieve the value of a variable of a nullable type, you should first test its <xref:System.Nullable%601.HasValue%2A> property to confirm that it has a value. If you try to read the value when <xref:System.Nullable%601.HasValue%2A> is `False`, Visual Basic throws an <xref:System.InvalidOperationException> exception. The following example shows the recommended way to read the variable `numberOfChildren` of the previous examples.
When nullable `Boolean` variables are used in Boolean expressions, the result can be `True`, `False`, or `Nothing`. The following is the truth table for `And` and `Or`. Because `b1` and `b2` now have three possible values, there are nine combinations to evaluate.
@@ -78,7 +74,7 @@ Sometimes you work with a value type that does not have a defined value in certa
78
74
79
75
When the value of a Boolean variable or expression is `Nothing`, it is neither `true` nor `false`. Consider the following example.
In this example, `b1 And b2` evaluates to `Nothing`. As a result, the `Else` clause is executed in each `If` statement, and the output is as follows:
84
80
@@ -92,14 +88,14 @@ Sometimes you work with a value type that does not have a defined value in certa
92
88
## Propagation
93
89
If one or both of the operands of an arithmetic, comparison, shift, or type operation is nullable, the result of the operation is also nullable. If both operands have values that are not `Nothing`, the operation is performed on the underlying values of the operands, as if neither were a nullable type. In the following example, variables `compare1` and `sum1` are implicitly typed. If you rest the mouse pointer over them, you will see that the compiler infers nullable types for both of them.
A database is one of the most important places to use nullable types. Not all database objects currently support nullable types, but the designer-generated table adapters do. See "TableAdapter Support for Nullable Types" in [TableAdapter Overview](/visualstudio/data-tools/tableadapter-overview).
98
+
A database is one of the most important places to use nullable types. Not all database objects currently support nullable types, but the designer-generated table adapters do. See "TableAdapter Support for Nullable Types" in [TableAdapter Overview](/visualstudio/data-tools/tableadapter-overview).
0 commit comments