当前位置: 首页 > 面试题库 >

C#中的条件运算符和返回类型

顾光明
2023-03-14
问题内容

尝试执行以下操作:

sqlCmd.Parameters.Add("@DateCreated", System.Data.SqlDbType.DateTime).Value 
    = myObject.DateCreated == DateTime.MinValue 
    ? DBNull.Value : myObject.DateCreated;

我收到此错误:

无法确定条件表达式的类型,因为“ System.DBNull”和“ System.DateTime”之间没有隐式转换

我显然理解该错误,但是考虑到Parameters.Value是object类型,为什么类型甚至很重要?有没有办法完成我想做的事情?


问题答案:

返回值进入的值并没有什么区别object,因为 必须首先确定返回值的类型

这两个值(投一个DBNull.ValuemyObject.DateCreated)其他,你会没事的基础。在这种情况下,基数甚至可以是object



 类似资料:
  • C++ 运算符 Exp1 ? Exp2 : Exp3; 其中,Exp1、Exp2 和 Exp3 是表达式。请注意冒号的使用和位置。? : 表达式的值取决于 Exp1 的计算结果。如果 Exp1 为真,则计算 Exp2 的值,且 Exp2 的计算结果则为整个 ? : 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,且 Exp3 的计算结果则为整个 ? : 表达式的值。 ? 被称为三元运

  • 如果希望获得两个数中最大的一个,可以使用 if 语句,例如: 不过,C语言提供了一种更加简单的方法,叫做 条件运算符,语法格式为: 表达式1 ? 表达式2 : 表达式3 条件运算符是C语言中唯一的一个三目运算符,其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。 上面的 if else 语句等价于

  • 我正在开发一个返回算术表达式的程序,其中包括运算符和整数。我为其实现的代码如下: 这段代码的问题是它返回运算符,但表达式中的所有运算符都是相同的:例如:我得到一个表达式9 2 3 4 5=?我不想让它全部包含,它可以是一个表达式中的许多随机运算符。任何帮助都将不胜感激。谢谢

  • 代码1返回1。 代码 2 返回 49。 他们不应该返回相同的结果吗? 请注意,49是1的ASCII码。 编辑:就像@matt在评论里说的那样。使用三元运算符时,“:”的两边被视为同一类型。由于getNumericValue假设它是一个int,两边都是int。条件为真,所以取左边,是chr,但认为是int。

  • 问题内容: 我对条件运算符有些疑惑。考虑以下两行: 为什么f1变为null且第二条语句引发NullPointerException? Langspec-3.0第15.25段说: 否则,第二和第三操作数分别为S1和S2类型。令T1为对S1进行装箱转换所产生的类型,而T2为对S2进行装箱转换所产生的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的

  • 我对条件运算符有点困惑。请考虑以下两行: 为什么f1变成null,而第二条语句抛出NullPointerException? LANSPEC-3.0第15.25段SAIS: 否则,第二和第三操作数的类型分别为S1和S2。设T1是对S1应用装箱转换得到的类型,设T2是对S2应用装箱转换得到的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的结果。