C# 中 ?? 操作符是什么意思?

奔腾286 2010-02-09 06:15:06
C# 中 ?? 操作符是什么意思?
怎么用?
...全文
628 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
-汪帆- 2010-02-10
  • 打赏
  • 举报
回复
?和??运算符是C# 2.0里面就有了
奔腾286 2010-02-10
  • 打赏
  • 举报
回复
结贴了!………………………………
奔腾286 2010-02-10
  • 打赏
  • 举报
回复
new SqlParameter("@code",(object)cl.Code?? DBNull.Value)

如果非空则为左面值,如果为空则为右面值。

Parameter不能插入null值的解决办法……
bwangel 2010-02-10
  • 打赏
  • 举报
回复
引用 8 楼 yangglemu 的回复:
又一个问这个问题的兄弟
?? 表示可以让值类型的值为null(null是引用类型才能用的)
为什么要这么做?
因为.Net讲泛型:
object o=null;
int?? x=null;
if(o==x)
如果没有那两个问号,这个IF语句就是错的(.Net为了泛型而泛型强造出来的东西)


你老兄真是误人子弟啊
ssPhone2010 2010-02-10
  • 打赏
  • 举报
回复
学习了!呵呵。。。。。。。。。。。。
aotian16 2010-02-10
  • 打赏
  • 举报
回复
可空运算符的赋值,null的话就赋值
flyerwing 2010-02-10
  • 打赏
  • 举报
回复
引用楼主 xindu20081001 的回复:
C# 中 ?? 操作符是什么意思?
怎么用?

如果一个可空值类型为空则将默认值赋予它,好象只这个意思!
mowensky 2010-02-10
  • 打赏
  • 举报
回复
学习了!呵呵。。。。。。。。。。。。
softman_2000 2010-02-10
  • 打赏
  • 举报
回复
挺有用的,在C++里,在这种情况下,有点麻烦。
特别 2010-02-09
  • 打赏
  • 举报
回复
int?? x=null;

老兄是什么版本的C#

引用 8 楼 yangglemu 的回复:
又一个问这个问题的兄弟
?? 表示可以让值类型的值为null(null是引用类型才能用的)
为什么要这么做?
因为.Net讲泛型:
object o=null;
int?? x=null;
if(o==x)
如果没有那两个问号,这个IF语句就是错的(.Net为了泛型而泛型强造出来的东西)
  • 打赏
  • 举报
回复
又一个问这个问题的兄弟
?? 表示可以让值类型的值为null(null是引用类型才能用的)
为什么要这么做?
因为.Net讲泛型:
object o=null;
int?? x=null;
if(o==x)
如果没有那两个问号,这个IF语句就是错的(.Net为了泛型而泛型强造出来的东西)
江南小鱼 2010-02-09
  • 打赏
  • 举报
回复
??可能是一个被遗忘的运算符,很少看到有人用它,它的用法很简单却很实用:
variable ?? defaultValue
相当于
variable == null ? defaultValue : variable
有了它,一行便能搞定Lazy Evaluation了:
使用??之前:

static UserAccess Users
{
get
{
if (_users == null)
{
_users = Proxy.GetQueryObject<UserAccess>();
}
return _users;
}
}


之后:

static UserAccess Users
{
get
{
return _users ?? (_users = Proxy.GetQueryObject<UserAccess>());
}
}


注:这个运算符只支持引用类型和Nullable类型。

tianliang1 2010-02-09
  • 打赏
  • 举报
回复
学习,学习新知识。。。。。。。
wuyq11 2010-02-09
  • 打赏
  • 举报
回复
可空类型Nullable
接合运算符??
int? x = null;
int y = x ?? -1; // X is null y为-1
相当于 int y = x.HasValue ? x.GetValueOrDefault() : -1
holyrong 2010-02-09
  • 打赏
  • 举报
回复
在三目操作中,判断表达式是否为null,如果为null,则执行问号后的表达式,否则就是问号前表达式的结果。
如:string a=null; string b=a??1; 此时b=1.
healer_kx 2010-02-09
  • 打赏
  • 举报
回复
乍一看以为是乱码呢。~
healer_kx 2010-02-09
  • 打赏
  • 举报
回复
我靠,有这种语法了? C#4.0?
threenewbee 2010-02-09
  • 打赏
  • 举报
回复
就是如果为null,则运行后面的,否则返回前面的。
相当于
obj = obj1 ?? new Object()

if (obj == null)
obj = new Object();
else
obj = obj1;

110,533

社区成员

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

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

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