黑马程序员技术交流社区
标题:
C#中的??是什么意思
[打印本页]
作者:
SUN_Q
时间:
2013-7-9 21:05
标题:
C#中的??是什么意思
如下面图片显示
adaf2edda3cc7cd936c6bf693901213fb90e9193.png
(3.73 KB, 下载次数: 1)
下载附件
2013-7-9 21:04 上传
作者:
zhangcheng5468
时间:
2013-7-9 21:29
有这个运算符吗?真没见过
作者:
黑骏马
时间:
2013-7-10 05:26
如果 ?? 运算符的左操作数非 null,该运算符将返回左操作数,否则返回右操作数。
如果iten.Name非空则返回其值,否则返回后面的默认值。
作者:
changweihua
时间:
2013-7-10 07:34
可空类型Nullable<T>,?相当于简化语法,??是C#的空接合操作符,可用于引用类型和可空值类型
作者:
高文咪
时间:
2013-7-10 09:35
还真没见过这种写法~~~学习下!
作者:
高文咪
时间:
2013-7-10 09:40
如果为null,则运行后面的,否则返回前面的。
例如:obj = obj1 ?? new Object()//等价于:if (obj == null) obj = new Object();else obj = obj1
作者:
彭家贰小姐
时间:
2013-7-10 09:59
var num = Request["data"] != null ? Request["data"] : "0";
var num = Request["data"] ?? "0";
这两句意思是一样的...
作者:
许大虾
时间:
2013-7-10 10:40
C# 双问号运算表达式
1、单问号(?)
作用:用于给变量设初化的时候,给变量(int类型)赋为null值,而不是0。
例子:
public int a; //默认值为0
public int ?b; //默认值为null
2、双问号(??)
作用:用于判断并赋值,先判断当前变量是否为null,如果是就可以赋一个新值,否则跳过。
例子:
public int? b; //默认值为null public int IsNullOrSkip()
{
return b ?? 0; //返回值为0
}
错误例子:
public int b; //默认值为0 public int IsNullOrSkip()
{
return b ?? 0; // 错误 运算符“??”无法应用于“int”和“int”类型的操作数
}
---------------------
作者:
马晓凤
时间:
2013-7-12 19:00
楼上说的很对
string a = b?? "-1";
当b为null时 a=-1,否则a=b
作者:
孔健
时间:
2013-7-15 12:18
本帖最后由 孔健 于 2013-7-15 13:06 编辑
如果 ?? 运算符的左操作数为 null,该运算符将返回右操作数,否则返回左操作数。
例:
static void Main(string[] args)
{
int? nVal1 = null;
int? nVal2 = 5;
// nVal1为空,相乘后还是null,输出0作为默认值
Console.WriteLine(2 * nVal1 ?? 0);
// nVal2非空,取计算值输出,输出10
Console.WriteLine(2 * nVal2 ?? 0);
}
参考资料:
http://bbs.itheima.com/thread-60055-1-1.html
作者:
sxdxgzr@126.com
时间:
2013-7-16 22:11
本帖最后由 sxdxgzr@126.com 于 2013-7-16 22:12 编辑
1可空类型Nullable<T> 其类型定义为
[SerializableAttribute]
public struct Nullable<T>
where T : struct
复制代码
代表一个值类型可以分配null,而引用类型本身就是可以设置为null,Nullable<T>是为值类型设计的。
2如何使用
eg:声明一个可为空的int类型 Nullable<int> a; 这与int ? a等价。均表示声明一个可为空的int类型。这里声明可为空类型的?
仅仅是一个语法糖。
3??是C#的空操作符,可用于引用类型和可空值类型,是为可为空的引用类型或值类型定义默认值的。
class NullCoalesce
{
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");
}
}
复制代码
http://msdn.microsoft.com/en-us/library/ms173224.aspx#
作者:
小周学诚
时间:
2013-7-19 09:32
为了减少可空类型的代码量,遇到null的时候
C#提供了??操作符来获取如果为空的默认值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2