“?”的用途是什么?

问题描述:

我试图了解移动编程,然后我遇到了这种代码的方法是应该将字符转换为数字。代码正在工作,但我的问题是“?”的目的是什么?在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; 

     } 
+0

它指示它是可空的(这样功能,可以对错误条件返回null) – amdixon

?是语法糖为Nullable<>类 - 在你的情况下int?实际上是Nullable<Int32>

该类的目的是允许值类型表示null值,因为它们通常不能(它们是C++术语中的“堆栈”对象)。它涉及到拳击,所以只有在需要的时候才使用它,但是会有与之相关的性能成本。

还要注意的是(在你的情况,或者只是一个正常的分配通过return)的设置,要null不参考实际上设置为null。这是更神奇的编译器,实际上它设置为new int?(),与HasValue属性设置为false一个实例。

可以表达一个值类型为空在两个方面:

  1. 空,空,等

  2. 诠释?双?

问号只是简写。

int?nullable<int>只是简写。可以为空的数据类型可以表示它的类型(int是这种情况)或null。 32位整数表示任何数字的范围如下:-2,147,483,648至2,147,483,647;但可空整数(int?)可以是该范围内的任何值,null