汗!第一次看到包含两个“??”运算符的代码: return s as string ?? string.Empty; 看不明白

fanciex 2007-11-11 11:19:14
第一次看到包含两个"??"的代码: return s as string ?? string.Empty;
看不明白.
只知道有三元运算符,不知道有??运算符。哪位大侠给解释一下这两个“??”或提供资料。
谢谢
...全文
117 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
harryheart 2007-11-12
  • 打赏
  • 举报
回复
又学到一招~!
symbol441 2007-11-12
  • 打赏
  • 举报
回复
如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。

pxb0420 2007-11-12
  • 打赏
  • 举报
回复
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/088b1f0d-c1af-4fe1-b4b8-196fd5ea9132.htm

C# 程序员参考
?? 运算符(C# 参考)
请参见 示例
全部折叠 全部展开 语言筛选器: 全部 语言筛选器: 多个 语言筛选器: Visual Basic 语言筛选器: C# 语言筛选器: C++ 语言筛选器: J# 语言筛选器: JScript
Visual Basic(声明)
Visual Basic(用法)
C#
C++
J#
JScript

如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。

备注
可空类型可以包含值,或者可以是未定义的。?? 运算符定义当可空类型分配给非可空类型时返回的默认值。如果在将可空类型分配给非可空类型时不使用 ?? 运算符,将生成编译时错误。如果使用强制转换,并且当前未定义可空类型,将发生 InvalidOperationException 异常。

有关更多信息,请参见可为空的类型(C# 编程指南)。

示例
复制代码
// nullable_type_operator.cs
using System;
class MainClass
{
static int? GetNullableInt()
{
return null;
}

static string GetStringValue()
{
return null;
}

static void Main()
{
// ?? operator example.
int? x = null;

// y = x, unless x is null, in which case y = -1.
int y = x ?? -1;

// Assign i to return value of method, unless
// return value is null, in which case assign
// default value of int to i.
int i = GetNullableInt() ?? default(int);

string s = GetStringValue();
// ?? also works with reference types.
// Display contents of s, unless s is null,
// in which case display "Unspecified".
Console.WriteLine(s ?? "Unspecified");
}
}


请参见
参考
C# 运算符

概念
C# 编程指南
可为空的类型(C# 编程指南)

其他资源
C# 参考

mohugomohu 2007-11-12
  • 打赏
  • 举报
回复
我也没见过。
不过上面已经说得很明白了。
277894613 2007-11-12
  • 打赏
  • 举报
回复
建议抽时间看看C# 2.0的新特性
honey52570 2007-11-11
  • 打赏
  • 举报
回复
?? 是空接符

例如:

int? i;
//i = 1;
int? j = i ?? 10;

//当i为null时候j就取??后的值

110,536

社区成员

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

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

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