当前位置:编程学习 > C#/ASP.NET >>

一个简单语法的问题

ConfigurationManager.AppSettings.Get("Name") ?? String.Empty;

中间的两个“??“什么意思? --------------------编程问答-------------------- 错误的语法?
--------------------编程问答-------------------- 呵呵,它的意思如果它左边的表达式为空,则返回右边的。否则就返回左边的。
--------------------编程问答-------------------- 如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。
--------------------编程问答--------------------
引用 2 楼 phy 的回复:
呵呵,它的意思如果它左边的表达式为空,则返回右边的。否则就返回左边的。 
--------------------编程问答-------------------- 比如:
string s1 = null ?? "abc";
string s2 = "def" ?? "ghi";
string s3 = null ?? null;
执行后:
s1 = "abc";
s2 = "def";
s3 = null;

--------------------编程问答-------------------- 认真看5楼的代码和结果。 --------------------编程问答-------------------- C#的奇怪语法比C++还多 --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 牛人
--------------------编程问答--------------------

if (ConfigurationManager.AppSettings.Get("Name") != null)
return ConfigurationManager.AppSettings.Get("Name") ?? String.Empty; 
else
return String.Empty; 
--------------------编程问答--------------------
引用 2 楼 phy 的回复:
呵呵,它的意思如果它左边的表达式为空,则返回右边的。否则就返回左边的。 
--------------------编程问答-------------------- 看MSDN啊~~~~~~,帮你贴了

如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。

备注
可空类型可以包含值,或者可以是未定义的。?? 运算符定义当可空类型分配给非可空类型时返回的默认值。如果在将可空类型分配给非可空类型时不使用 ?? 运算符,将生成编译时错误。如果使用强制转换,并且当前未定义可空类型,将发生 InvalidOperationException 异常。 

有关更多信息,请参见可空类型(C# 编程指南)。



// 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");
    }
}
 

--------------------编程问答--------------------  哈哈...是C中的?:
应该有学过吧 --------------------编程问答-------------------- 如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,