C# net中双问号的用法

C# net中双问号的用法,c#,.net,programming-languages,C#,.net,Programming Languages,可能重复: 什么是使用??在.Net中?如何在分配变量时使用它进行检查?你能写一些代码片段来更好地解释内容吗?它与某些可空值相关吗?它是。运算符“?”称为空合并运算符,用于定义可空值类型以及引用类型的默认值 当我们需要为一个可为空的变量分配一个不可为空的变量时,它非常有用。如果我们在赋值时不使用它,就会出现如下错误 无法将类型“int”隐式转换为“int”。存在显式转换(是否缺少强制转换?) 为了克服这个错误,我们可以做如下 using System; using System.Collect

可能重复:


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

它是。

运算符“?”称为空合并运算符,用于定义可空值类型以及引用类型的默认值

当我们需要为一个可为空的变量分配一个不可为空的变量时,它非常有用。如果我们在赋值时不使用它,就会出现如下错误

无法将类型“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());    
        }
    }
}

绝对是个傻瓜。不必费心搜索,就像OP一样……虽然很多人认为它是重复的,但它仍然是谷歌的第一个搜索结果,所以我会关闭其他重复的,而不是这一个!