我试着理解移动编程,然后我遇到了这个方法的代码,这个方法应该是将一个字符转换成一个数字。代码正在起作用,但我的问题是,"?“的目的是什么?在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;
}发布于 2015-10-18 04:22:42
?是Nullable<>类的语法糖--在您的例子中,int?实际上是Nullable<Int32>。
这个类的目的是允许值类型表示null值,因为它们通常不能(它们是C++术语中的“堆栈”对象)。但是,它涉及装箱,所以只在需要时才使用它们,这与其相关的性能成本。
还请注意,将其设置为null (在您的情况下通过return,或者仅仅是一个正常的赋值)实际上并不会设置对null的引用。这是更多的编译器魔术,它实际上将其设置为new int?(),一个将HasValue属性设置为false的实例。
发布于 2015-10-18 04:21:50
您可以通过两种方式表示值类型是可空的:
问号只是速记。
发布于 2015-10-18 04:22:15
int?只是nullable<int>的缩写。可空数据类型是可以表示其类型(本例为int)或null的数据类型。32位整数表示任意数字是以下范围:-2,147,483,648至2,147,483,647;但可空整数(int?)可以是该范围内的任何东西,或null。
https://stackoverflow.com/questions/33194259
复制相似问题