void getsth(int? a, int? b)
{
...
}请教int?的问号是啥意思?

解决方案 »

  1.   

    可以为null的 intpublic int? a=null;
      

  2.   

    c# 2.0的语法,nullable  允许值类型 为null
      

  3.   

    不加?就不能为null吗public int a=null;//初始化之前默认就是null吧。。
      

  4.   

    public int a=null;//初始化之前默认就是null吧。。
    ----------
    默认为0.int是值类型,值类型默认都是0,引用类型默认都是null.
      

  5.   

    是的,不加?就不能为null
    来晚了
      

  6.   


    要是你写public int a;然后在下面引用的话,就会报错,说不能引用没有赋值的int类型,
    写int?就可以给他赋null值
      

  7.   

    可空类型
    对于一个类型,如果既可以给它分配一个值,也可以给它分配null,就说这个类型是可空的.如类似int32的值类型不是可空类型。由于值类型的容量只够表示适合该类型的值,因为它不可为空;值类型没有表示空值所需的额外容量。
    C# 引入Nullable类型,允许我们将值类型赋值为null。 
    Nullable是一个值类型,而且限制类型参数为值类型。  
    int? x = 3;
      

  8.   

    int? 相当于 Nullable<int>
    为了便易理解,我一般都写Nullable<int> 
      

  9.   

    C#为了满足互操作性的需求而专门引入的一种类型,称之为Nullable Values。
    举例:在C#中,DateTime是值类型,而Java中,DateTime是引用类型,为了满足互操作性需求,C#中引入了Nullable Values。
    int是值类型,而null是引用类型,因此,你是无法将null赋值给int类型变量的。
    而int?是引用类型,其下的Value属性保存了他所指代的值类型的值,也就是int本身的值,既然int?是引用类型,当然可以将null赋值给它。
      

  10.   

    是c#2.0引入的一个 可空类型!int类型数据时不允许为空的,如果为空就会引发编译错误,所以用int?表示此类型可以为null
      

  11.   

    是的,不加? 就不能为null
    因为int 是值类型,不是引用类型  是不能设置为 null 的
    值类型都有自己的默认值,int 是 0int? 只是一种简写形式
    实际的形式是 Nullable<int>
    还有一个重要的方法 HasValue
      

  12.   

    谢谢各位前辈!
    对nullable类型有一定认识了:)
    结贴。