Nullable types and ?? operator

          This time, i would like to discuss about a cool feature of C# 2.0. As you know, some database operations return null values and results into throwing exceptions unless you handled well in your business logic. .Net 2.0 has been solved by introducing nullable types. Lets discuss about its features and functionalities.
             Nullable type can represent all the values of its underlying type, plus the value null. Thus, if you define a nullable boolean, its values comes from either true or false as well as Null.
For, nullable integer can be assigned from integer values and null. We can define a nullable type using its underlying datatype suffixed by a question mark symbol(?). Lets look at the examples
 
    Examples of nullable types
        //Nullable values must be assigned with an initial value.
        
        int? intNullable = 2;
        double? dblNullable = 37.73;
        bool? bNullable = true;
      
        Int[]? arNullable = new int?[1,2];
 
            Keep in mind that nullable types are applicable only to value types or an array of value types.Referance types can't assinged to nullable types, since nullable types instances of System.Nullable(T) struct(here T is the type). If u define a nullable string, it would result into compile-time error!!!!..          
   
Properties and Methods
 
            Nullable type has a property called HasValue, which determines whether the value contains null or not. Nullable types are very useful where you are interacting with databases, especially columns with null or empty values. There is very useful method associated with the Nullable types, GetValueOrDefault() which returns the value of the variable or default value in case of null(for eg: false for bool, 0 for integer, 0.0  for double).
 
?? Operator
 
            Lets assume, you are accessing a table which has some columns with empty(undefined) values or null values. But still you want to fetch the data since the whole data is very large and time-consuming. Instead of showing those null values, it could be possible to display some predefined values to end user, there by making the data more understanding and readable. This feature can be achieved by using "??" operator. It simply allows you to assign a value to nullable type if the retrieved value is in fact null. The following code-snippet makes this feature more clear.
 
   
//Suppose you are executing a database operation
 //which returns a null value instead of integer
 

    public Int GetMinimumCount()
    {

        int? iTemp = ConfigManager.GetMinimumCount() ?? 100;

        return iTemp.Value;

    }

        Nullable types are very useful when we are following ORM architecture(eg: nHibernate), where we would be dealing table fields are class members, so that the chance of getting null values very high compared to 3-Tier architecture. I hope you would get an idea about nullable types and its features.

1 Comment

Comments have been disabled for this content.