标签: null-coalescing-operator

C#中两个问号共同意味着什么?

跨越这行代码:

FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();
Run Code Online (Sandbox Code Playgroud)

这两个问号意味着什么,是某种三元运算符?谷歌很难找到.

c# null-coalescing-operator

1540
推荐指数
16
解决办法
37万
查看次数

JavaScript中是否有"null coalescing"运算符?

Javascript中是否有空合并运算符?

例如,在C#中,我可以这样做:

String someString = null;
var whatIWant = someString ?? "Cookies!";
Run Code Online (Sandbox Code Playgroud)

我可以为Javascript找出的最佳近似值是使用条件运算符:

var someString = null;
var whatIWant = someString ? someString : 'Cookies!';
Run Code Online (Sandbox Code Playgroud)

这有点ick嘿恕我直言.我可以做得更好吗?

javascript operators null-coalescing-operator null-coalescing

1305
推荐指数
11
解决办法
31万
查看次数

好奇的null-coalescing运算符自定义隐式转换行为

注意:这似乎已在Roslyn中修复

写我的回答时,此问题出现了这一个,其中谈到了的关联性空合并运算符.

提醒一下,null-coalescing运算符的概念就是表单的表达式

x ?? y
Run Code Online (Sandbox Code Playgroud)

首先评估x,然后:

  • 如果值为xnull,y则进行求值,这是表达式的最终结果
  • 如果值x是非空,y评估,的值x是表达的最终结果,转换到编译时间类型的后y如果需要的话

现在通常不需要转换,或者它只是从可空类型到非可空类型 - 通常类型相同,或者只是从(比如说)int?int.但是,您可以创建自己的隐式转换运算符,并在必要时使用它们.

对于简单的情况x ?? y,我没有看到任何奇怪的行为.但是,(x ?? y) ?? z我看到一些令人困惑的行为.

这是一个简短但完整的测试程序 - 结果在评论中:

using System;

public struct A
{
    public static implicit operator B(A input)
    {
        Console.WriteLine("A to B");
        return new B();
    }

    public static implicit operator …
Run Code Online (Sandbox Code Playgroud)

c# null-coalescing-operator

535
推荐指数
5
解决办法
2万
查看次数

PHP三元运算符vs null合并运算符

有人可以解释PHP中三元运算符速记(?:)和空合并运算符(??)之间的差异吗?

他们什么时候表现不同,以同样的方式(如果这种情况发生)?

$a ?: $b
Run Code Online (Sandbox Code Playgroud)

VS.

$a ?? $b
Run Code Online (Sandbox Code Playgroud)

php ternary-operator null-coalescing-operator php-7

285
推荐指数
9
解决办法
10万
查看次数

是否有C#null-coalescing运算符的Python等价物?

在C#中有一个null-coalescing运算符(写为??),允许在赋值期间进行简单(短)空检查:

string s = null;
var other = s ?? "some default value";
Run Code Online (Sandbox Code Playgroud)

是否有python等价物?

我知道我能做到:

s = None
other = s if s else "some default value"
Run Code Online (Sandbox Code Playgroud)

但是有更短的方式(我不需要重复s)?

python null-coalescing-operator

258
推荐指数
6
解决办法
7万
查看次数

171
推荐指数
5
解决办法
6万
查看次数


使用Null Coalescing运算符的独特方法

我知道在C#中使用Null合并运算符的标准方法是设置默认值.

string nobody = null;
string somebody = "Bob Saget";
string anybody = "";

anybody = nobody   ?? "Mr. T"; // returns Mr. T
anybody = somebody ?? "Mr. T"; // returns "Bob Saget"
Run Code Online (Sandbox Code Playgroud)

但还有什么可以??用于?它不像三元运算符那样有用,除了比以下更简洁和更容易阅读:

nobody = null;
anybody = nobody == null ? "Bob Saget" : nobody; // returns Bob Saget
Run Code Online (Sandbox Code Playgroud)

所以考虑到甚至更少知道空合并运算符......

  • 你有没有用过??别的东西?

  • ??必要的,还是应该只使用三元运算符(大多数人都熟悉)

c# null coding-style conditional-operator null-coalescing-operator

157
推荐指数
11
解决办法
6万
查看次数

?? 合并空字符串?

我发现自己做的越来越多的事情是检查字符串是否为空(如in ""或null)和条件运算符.

一个当前的例子:

s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber;
Run Code Online (Sandbox Code Playgroud)

这只是一种扩展方法,它相当于:

string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber;
Run Code Online (Sandbox Code Playgroud)

因为它是空的而不是null,所以??不会这样做.一个string.IsNullOrEmpty()版本??将是完美的解决方案.我认为必须有一个更清洁的方式来做这件事(我希望!),但我一直在找不到它.

有没有人知道更好的方法来做到这一点,即使它只在.Net 4.0中?

c# string coalesce null-coalescing-operator

154
推荐指数
7
解决办法
6万
查看次数

PHP的合并功能?

许多编程语言都有一个coalesce函数(返回第一个非NULL值,例如).遗憾的是,PHP在2009年没有.

在PHP本身获得合并函数之前,用PHP实现一个好方法是什么?

php optimization null-coalescing-operator

130
推荐指数
6
解决办法
5万
查看次数