看到这样一个例子:
public void Test(int? arg)
{
   ....
}为什么参数类型后面带个问号啊?

解决方案 »

  1.   

    it must be a spelling mistake. just remove it.
      

  2.   

    可空类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。例如,Nullable<Int32>,读作“可空的 Int32”,可以被赋值为 -2147483648 到 2147483647 之间的任意值,也可以被赋值为 null 值。Nullable<bool> 可以被赋值为 true 或 false,或 null。在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义。class NullableExample
    {
        static void Main()
        {
            int? num = null;
            if (num.HasValue == true)
            {
                System.Console.WriteLine("num = " + num.Value);
            }
            else
            {
                System.Console.WriteLine("num = Null");
            }        //y is set to zero
            int y = num.GetValueOrDefault();        // num.Value throws an InvalidOperationException if num.HasValue is false
            try
            {
                y = num.Value;
            }
            catch (System.InvalidOperationException e)
            {
                System.Console.WriteLine(e.Message);
            }
        }
    }
      

  3.   

    找到答案了。Test(null);
    加问号的的话就即使是值类型也可以传入null值。int? nub=null;这样写也是可以编译通过的。