跨越这行代码:
FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();
Run Code Online (Sandbox Code Playgroud)
这两个问号意味着什么,是某种三元运算符?谷歌很难找到.
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
注意:这似乎已在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) 有人可以解释PHP中三元运算符速记(?:)和空合并运算符(??)之间的差异吗?
他们什么时候表现不同,以同样的方式(如果这种情况发生)?
$a ?: $b
Run Code Online (Sandbox Code Playgroud)
VS.
$a ?? $b
Run Code Online (Sandbox Code Playgroud) 在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)?
C#的??运营商是否有VB.NET等价物?
可能重复:
如何获取Java中的第一个非null值?
是否可以在Java中执行类似于以下代码的操作
int y = x ?? -1;
Run Code Online (Sandbox Code Playgroud)
我知道在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
我发现自己做的越来越多的事情是检查字符串是否为空(如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# ×5
operators ×2
php ×2
coalesce ×1
coding-style ×1
equivalent ×1
java ×1
javascript ×1
null ×1
optimization ×1
php-7 ×1
python ×1
string ×1
vb.net ×1