小编Rau*_*nie的帖子

C#中的三元运算符和if语句之间是否存在差异?

我正在使用可以为空的DateTime对象并遇到一些奇怪的行为.这是一个示例函数:

    public DateTime? Weird()
    {
        DateTime check = DateTime.Now;
        DateTime? dt;
        if (check == DateTime.MinValue)
            dt = null;
        else
            dt = Viewer.ActiveThroughUTC.ToLocalTime();

        //this line give a compile error
        dt = (check == DateTime.MinValue) ? (null) : (Viewer.ActiveThroughUTC.ToLocalTime());
        return dt;
    }
Run Code Online (Sandbox Code Playgroud)

据我所知,三元运算符的行应与前四行相同,但VS2010给出了一个编译错误,说没有<null>和DateTime 之间存在转换(即使有问题的对象是'DateTime' ?').有什么我应该知道的关于三元运算符的东西还是这个(喘气?)一个错误?

c# ternary-operator

3
推荐指数
1
解决办法
1702
查看次数

标签 统计

c# ×1

ternary-operator ×1