“?”的用途是什么?
问题描述:
我试图了解移动编程,然后我遇到了这种代码的方法是应该将字符转换为数字。代码正在工作,但我的问题是“?”的目的是什么?在int之后。“?”的用途是什么?
static int? Translate(char c)
{
if ("ABC".Contains(c))
return 2;
else if ("DEF".Contains(c))
return 3;
else if ("GHI".Contains(c))
return 4;
else if ("JKL".Contains(c))
return 5;
else if ("MNO".Contains(c))
return 6;
else if ("PQRS".Contains(c))
return 7;
else if ("TUV".Contains(c))
return 8;
else if ("WXYZ".Contains(c))
return 9;
return null;
}
答
?
是语法糖为Nullable<>
类 - 在你的情况下int?
实际上是Nullable<Int32>
。
该类的目的是允许值类型表示null
值,因为它们通常不能(它们是C++术语中的“堆栈”对象)。它涉及到拳击,所以只有在需要的时候才使用它,但是会有与之相关的性能成本。
还要注意的是(在你的情况,或者只是一个正常的分配通过return
)的设置,要null
不参考实际上设置为null
。这是更神奇的编译器,实际上它设置为new int?()
,与HasValue
属性设置为false
一个实例。
答
可以表达一个值类型为空在两个方面:
空,空,等
诠释?双?
问号只是简写。
答
int?
是nullable<int>
只是简写。可以为空的数据类型可以表示它的类型(int
是这种情况)或null
。 32位整数表示任何数字的范围如下:-2,147,483,648至2,147,483,647;但可空整数(int?
)可以是该范围内的任何值,或null
。
它指示它是可空的(这样功能,可以对错误条件返回null) – amdixon