?:的理论性问题

Deltag1984 2009-08-06 02:20:59
parameters[0] = new SqlParameter("@p_GroupName", String.IsNullOrEmpty(groupName) ? DBNull.Value : groupName);

这个语句编译的时候会报错--无法实现DBNull.Value和String的隐式转换
但在DBNUll.Value或者groupName前加上一个强转(object)就能得到正确结果

有人能从理论上解释一下吗?
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-08-06
  • 打赏
  • 举报
回复
使用object实现值的隐式转换,SqlParameter可使用object类型
hecker728 2009-08-06
  • 打赏
  • 举报
回复
?: 两边的类型要一致

object可以表示任何类型,所以通过
lovvver 2009-08-06
  • 打赏
  • 举报
回复
在SqlParameter中使用DBNull,并且使用?:表达式,的确会出现这个问题,只好分开来写。
十八道胡同 2009-08-06
  • 打赏
  • 举报
回复
三目运算符 左右2边的返回值是同一类型。。
qldsrx 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zgke 的回复:]
int _Value = 条件 ? "1" : 1;

你认为 int _Value="1"; 能过去吗?

object 为什么可以 所有类型都是继承object来的.

[/Quote]
int _Value = 条件 ? null : 1;
我认为int _Value= null; 能过去.
但是这样写还是不让,不是能不能过得去的问题,而是那个三目表达式限制了冒号两边必须类型相同,连null都不允许, 体现了微软的霸道.
zgke 2009-08-06
  • 打赏
  • 举报
回复
int _Value = 条件 ? "1" : 1;

你认为 int _Value="1"; 能过去吗?

object 为什么可以 所有类型都是继承object来的.
阿非 2009-08-06
  • 打赏
  • 举报
回复
?:
三目运算符
要求 : 左右两边的表达式返回值 是同一类型

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧