“?”的目的是什么?

时间:2015-10-18 04:18:26

标签: c# mobile

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

        }

3 个答案:

答案 0 :(得分:3)

null?类的语法糖 - 在您的情况下Nullable<>实际上是int?

这个类的目的是允许值类型表示Nullable<Int32>值,因为它们通常不能(它们是C ++术语中的“堆栈”对象)。它涉及拳击,但是只在需要时才使用它们,与之相关的性能成本。

另请注意,在您的情况下将其设置为null(通过null,或仅将其设置为正常分配)实际上并未将引用设置为return。这是更多编译器魔法,实际上将其设置为nullnew int?()属性设置为HasValue的实例。

答案 1 :(得分:0)

您可以通过两种方式表达值类型可以为空:

  1. 可空,可空等

  2. INT?加倍?

  3. 问号只是简写。

答案 2 :(得分:0)

s2=raw_input('Enter the s2: ') #read the string from user x=len(s2) y=x-1 s1=[20] #another array to hold the new string j=0 if len(s2)%2==0: #if length of string is even for i in range(0,y/2-1): #do until i<=half of string length if s2[i]==s2[y-i]: s1[j]=s2[i] j=j+1 #if characters are equal then copy the character to array elif s2[i]!=s2[y-i]: s1[j]=s2[i] j=j+1 s1[j]=s2[y-i] j=j+1 #if characetrs are not equal then copy both the letters elif len(s2)%2!=0: #if length of string is odd for i in range(0,y/2-1): if s2[i]==s2[y-i]: s1[j]=s2[i] j=j+1 elif s2[i]!=s2[y-i]: s1[j]=s2[i] j=j+1 s1[j]=s2[y-i] j=j+1 #do same as above z=2*len(s1) #get 2xlength of string if z%2==0: for i in range(0,z-1): if i<=z/2: s1[z-i]=s1[i] #copy first half to the second half of string to create the pallindrome. if z%2!=0: for i in range(0,z-1): if i<=(z/2)-1: s1[z-i]=s1[i] print s1 #print pallindrome 只是int?的简写。可以为空的数据类型可以表示其类型(本例为nullable<int>)或int。 32位整数代表任何数字是以下范围:-2,147,483,648到2,147,483,647;但可以为空的整数(null)可以是该范围内的任何内容, int?