在.net中使用双重问号

时间:2011-06-27 11:58:56

标签: c# .net programming-languages

  

可能重复:
  What do two question marks together mean in C#?

用法是什么?在.Net?如何在分配变量时检查它?你能不能写一些代码片段来更好地解释内容?它与某些可空的有关吗?

2 个答案:

答案 0 :(得分:2)

操作员'??'被称为null-coalescing运算符,用于为可空值类型和引用类型定义默认值。

当我们需要为可空变量分配一个非可空变量时,这很有用。如果我们在分配时不使用它,我们会收到类似

的错误

无法隐式转换类型'int?' 'int'。存在显式转换(您是否错过了演员?)

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

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());    
        }
    }
}

答案 1 :(得分:0)