?? Operator (C# Reference)
This page is specific to:.NET Framework Version:2.03.03.54.0
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

Community Content

Related links
Added by:Thambidurai

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

Is that a typo?
Added by:inmykingdom
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)


? is called nullable Type
Added by:shahjapan
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;
© 2009 Microsoft Corporation. All rights reserved.   Terms of Use | Trademarks | Privacy Statement
Page view tracker
Rate the Lightweight library
x
Lightweight builds on ScriptFree (loband) by adding features you've requested: a SearchBox and default code language selection.
Do you like the SearchBox?
Do you like the tabbed code blocks?
How useful is this topic?
Tell us more.
Thanks
x
You're helping to improve MSDN Online.
Feedback
Switch View
Classic
Lightweight Beta
ScriptFree
Switch View