C# Language Reference
?? Operator (C# Reference)

The ?? operator returns the left-hand operand if it is not null, or else it returns the right operand.

Remarks

A nullable type can contain a value, or it can be undefined. The ?? operator defines the default value to be returned when a nullable type is assigned to a non-nullable type. If you try to assign a nullable type to a non-nullable type without using the ?? operator, you will generate a compile-time error. If you use a cast, and the nullable type is currently undefined, an InvalidOperationException exception will be thrown.

For more information, see Nullable Types (C# Programming Guide).

Example

// nullable_type_operator.cs
using System;
class MainClass
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        // ?? operator example.
        int? x = null;

        // y = x, unless x is null, in which case y = -1.
        int y = x ?? -1;

        // Assign i to return value of method, unless
        // return value is null, in which case assign
        // default value of int to i.
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // ?? also works with reference types. 
        // Display contents of s, unless s is null, 
        // in which case display "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}
See Also

Reference

C# Operators

Concepts

C# Programming Guide
Nullable Types (C# Programming Guide)

Other Resources

C# Reference

Tags :


Community Content

Thambidurai
Related links

More links...

http://weblogs.asp.net/scottgu/archive/2007/09/20/the-new-c-null-coalescing-operator-and-using-it-with-linq.aspx

http://blog.devstone.com/Aaron/archive/2006/01/02/1404.aspx

Tags : operator

inmykingdom
Is that a typo?
This compiles, but I'm not sure what the question mark does in this case:

int? x = null;

The question mark declares x as a nullable int, which is why you can initialise it to null.

(see also http://msdn.microsoft.com/en-us/library/1t3y8s4s(VS.80).aspx)


Tags :

shahjapan
? is called nullable Type
you can not assign null value to any integer variable, as by default integer type variables are not nullable integer.

see you can use below snippet only if you have used int? x = null else even u cant declare a variable like int x = null

int? x = null;
int y;
y = x??-1;
Tags :

Page view tracker