相关疑难解决方法(0)

好奇的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万
查看次数

要三元还是不三元?

我个人是三元运算符的拥护者:()?:; 我确实意识到它有它的位置,但我遇到了许多完全反对使用它的程序员,而且有些人经常使用它.

你有什么感受?你看到了什么有趣的代码?

multilingual ternary-operator conditional-operator

180
推荐指数
17
解决办法
4万
查看次数

PHP中的C#的空合并运算符(??)

在PHP中是否有像??C#一样的三元运算符?

?? 在C#中是干净和短,但在PHP中,你必须做的事情如下:

// This is absolutely okay except that $_REQUEST['test'] is kind of redundant.
echo isset($_REQUEST['test'])? $_REQUEST['test'] : 'hi';

// This is perfect! Shorter and cleaner, but only in this situation.
echo null? : 'replacement if empty';

// This line gives error when $_REQUEST['test'] is NOT set.
echo $_REQUEST['test']?: 'hi';
Run Code Online (Sandbox Code Playgroud)

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

49
推荐指数
4
解决办法
1万
查看次数

PHP嵌套条件运算符错误?

   
                return
                    true  ? 'a' :
                    false ? 'b' :
                                                           'c';

这应该返回'a',但它不会.它返回'b'.PHP处理条件运算符的不同部分的顺序是否存在错误?

我从这种情况下的多个条件运算符得到了一个好主意吗?它看起来似乎正常工作.

(当然,真实和假是为了示例的目的.在实际代码中,它们分别是评估为真和假的语句.是的,我知道这肯定)

php conditional-operator

4
推荐指数
2
解决办法
1333
查看次数