当前位置:  开发笔记 > 编程语言 > 正文

从使用三元运算符的方法返回可空值

如何解决《从使用三元运算符的方法返回可空值》经验,为你挑选了1个好方法。

我在使用?:运算符的方法中返回可空类型时遇到了一些困难.

例如,这有效:

    public static Int32? RunInt32Query(string query, KeyValueCollection parameters)
    {
        object scalar = RunScalarQuery(query, parameters);

        if (scalar != null)
        {
            return Convert.ToInt32(scalar);
        }
        else
        {
            return null;
        }
    }

但是这个例子不起作用,它不会编译:

    public static Int32? RunInt32Query(string query, KeyValueCollection parameters)
    {
        object scalar = RunScalarQuery(query, parameters);

        return (scalar != null) ? Convert.ToInt32(scalar) : null;
    }

据我了解,这两种方法在高水平上几乎完全相同,但显然不是?



1> O. R. Mapper..:

试试这个:

return (scalar != null) ? (Int32?)Convert.ToInt32(scalar) : null;

return Convert.ToInt32(scalar);

编译器知道目标类型是Int32?(基于方法声明),因此可以Convert.ToInt32(scalar)基于隐式转换自动转换表达式的结果.

使用条件运算符,编译器首先尝试确定表达式的类型(scalar != null) ? Convert.ToInt32(scalar) : null.为此,它评估两个结果表达式的类型,Convert.ToInt32(scalar)以及null.这些类型分别是Int32Object.编译器并不明显两个表达式都可以转换为Int32?.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有