Click to Rate and Give Feedback
MSDN
MSDN Library
Visual Studio 2005
Visual Studio
Visual C#
C# Reference
C# Operators
 ?? Operator
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2005/.NET Framework 2.0

Other versions are also available for the following:
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.

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).

// 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");
    }
}
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Related links      Thambidurai   |   Edit   |   Show History

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

Flag as ContentBug
Is that a typo?      Commodore73 ... inmykingdom   |   Edit   |   Show History
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 What's this?: Add a tag
Flag as ContentBug
? is called nullable Type      shahjapan   |   Edit   |   Show History
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 What's this?: Add a tag
Flag as ContentBug
Processing
© 2010 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker