Free mag vol1 | Page 223

CHAPTER 4  CORE C# PROGRAMMING CONSTRUCTS, PART II For example, you are able to programmatically discover whether the nullable variable indeed has been assigned a null value using the HasValue property or the != operator. The assigned value of a nullable type may be obtained directly or via the Value property. In fact, given that the ? suffix is just a shorthand for using Nullable, you could implement your LocalNullableVariables() method as follows: static void LocalNullableVariablesUsingNullable() { // Define some local nullable types using Nullable. Nullable nullableInt = 10; Nullable nullableDouble = 3.14; Nullable nullableBool = null; Nullable nullableChar = 'a'; Nullable[] arrayOfNullableInts = new int?[10]; } Working with Nullable Types As stated, nullable data types can be particularly useful when you are interacting with databases, given that columns in a data table may be intentionally empty (e.g., undefined). To illustrate, assume the following class, which simulates the process of accessing a database that has a table containing two columns that may be null. Note that the GetIntFromDatabase() method is not assigning a value to the nullable integer member variable, while GetBoolFromDatabase() is assigning a valid value to the bool? member: class DatabaseReader { // Nullable data field. public int? numericValue = null; public bool? boolValue = true; // Note the nullable return type. public int? Get