例如:
int? id = null;
string? name = null;
还有如:
public int?[] InsertTest(int? parentId, string name, DateTime? publishTime, decimal? price, bool? isGood, out int? minId)
    {
        // 仅为说明如何做错误处理
        if (String.IsNullOrEmpty(name))
            throw new ArgumentException("参数不能是空", "name");        int? id = null;
        int? count = null;
        minId = null;        Singleton<TestTableAdapter>.Instance.InsertTest(parentId, name, publishTime, price, isGood, ref id, ref count, ref minId);
        return new int?[] { id, count };
    }

解决方案 »

  1.   

    空类型?
    int ?id=null表是id可以为null值。
      

  2.   

    2楼正解,
    可惜找不到MSDN2原文连接了,
      

  3.   

    单问号---用于给变量设初值的时候,给变量(int类型)赋值为null,而不是0!
    双问号---用于判断并赋值,先判断当前变量是否为null,如果是就可以赋一个新值,否则跳过!
    public int? para;
    //public int para;如果不注释掉此行,而把上一行注释掉的话,下面会报错!
    public int par()
    {
        return this.para ?? 0;
    }
      

  4.   

    在与数据库交互时,支持所有类型(包括值类型)的可空值是很重要的,而一直以来通用编程语言很少或没有提供这方面的支持。在没有直接语言支持的情况下,虽然也存在许多用于处理空值和值类型的方法,但都存在缺点。例如,一种方法是使用“特殊”值(例如将 −1 用于整数)指示空值,但是这种方法只有在能够确定未使用的值的情况下有效。另一种方法是在单独的字段或变量中维护布尔空值指示符,但是这种方法不是很适合参数和返回值。第三种方法是使用一组用户定义的可空类型,但是这仅适用于属于闭集的类型集合。C# 的可空类型 (nullable type) 通过为所有值类型的可空形式提供完整和集成的支持,解决了这个由来已久的问题。
    可空类型是使用 ? 类型修饰符来构造的。例如,int? 是预定义类型 int 的可空形式。可空类型的基础类型必须是非可空的值类型。
    可空类型是一个组合了基础类型的值和布尔空值指示符的结构。可空类型的实例具有两个公共只读属性:bool 类型的 HasValue 和可空类型的基础类型的 Value。HasValue 对所有非空实例都为 true,对空实例为 false。当 HasValue 为 true 时,Value 属性返回所包含的值。当 HasValue 为 false 时,尝试访问 Value 属性将引发异常。
    可从任何非可空值类型隐式转换到该类型的可空形式。此外,还可从 null 文本隐式转换到任何可空类型。在下面的示例中
    int? x = 123;
    int? y = null;
    if (x.HasValue) Console.WriteLine(x.Value); 
    if (y.HasValue) Console.WriteLine(y.Value);
    int 值 123 和 null 文本被隐式转换为可空类型 int?。该示例针对 x 输出 123,但是第二个 Console.WriteLine 未执行,因为 y.HasValue 为 false
      

  5.   

    int?就是Nullable<int>的简写,查查Nullable就能明白了
      

  6.   

    可空类型,
    int?i
    i可以=null