关于C#:在.NET中使用双问号

usage of double question mark in .net

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What do two question marks together mean in C#?

它的用法是什么?在.NET中?如何在分配变量时使用它进行检查?你能写一些代码片段来更好地解释内容吗?它与一些可以为空的相关吗?


接线员??'被称为空合并运算符,用于为可为空的值类型以及引用类型定义默认值。

当我们需要将一个可以为空的变量赋给一个不可以为空的变量时,它是有用的。如果我们在分配时不使用它,我们会得到一个错误,比如

无法隐式转换类型"int"?"int"。存在显式转换(是否缺少强制转换?)

为了克服这个错误,我们可以做如下…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GenConsole
{
    class Program
    {    
        static void Main(string[] args)
        {
            CoalescingOp();
            Console.ReadKey();
        }

        static void CoalescingOp()
        {
            // A nullable int
            int? x = null;
            // Assign x to y.
            // y = x, unless x is null, in which case y = -33(an integer selected by our own choice)
            int y = x ?? -33;
            Console.WriteLine("When x = null, then y =" + y.ToString());

            x = 10;
            y = x ?? -33;
            Console.WriteLine("When x = 10, then y =" + y.ToString());    
        }
    }
}

它是空合并运算符。