代码之家  ›  专栏  ›  技术社区  ›  glenneroo Menyus777

变量声明后面的一个问号是什么意思?[副本]

  •  44
  • glenneroo Menyus777  · 技术社区  · 15 年前

    在一个开源项目中,我试图 托斯特林 编译器阻止了DateTime对象。当我跳到这个定义时,我看到了:

    public DateTime? timestamp;
    

    请有人告诉我这叫什么,为什么可能有用?

    4 回复  |  直到 15 年前
        1
  •  64
  •   Cameron    12 年前

    这是一个 nullable type . 允许为空类型 value types (例如。 int s和DateTime等结构)包含空值。

    这个 ? 是 Nullable<DateTime> 因为它经常被使用。

    打电话 ToString() :

    if (timstamp.HasValue) {        // i.e. is not null
        return timestamp.Value.ToString();
    }
    else {
        return "<unknown>";   // Or do whatever else that makes sense in your context
    }
    
        2
  •  9
  •   Wesley Wiser    15 年前

    ? 生成值类型( int , bool , DateTime ,或任何其他 struct 或 enum )可通过 System.Nullable<T> 键入。 DateTime? 意味着变量是 System.Nullable<DateTime> . 您可以指定 日期时间 或价值 null 到那个变量。要检查变量是否有值,请使用 HasValue 属性获取实际值,使用 Value 财产。

        3
  •  5
  •   Jacob    15 年前

    这是一条捷径 Nullable<DateTime> . 值类型,如 DateTime 不能为空; Nullable<> 包装值类型,使对象具有 HasValue 物业及其他便利功能。

        4
  •  -2
  •   Ali Tarhini    15 年前

    它是可空的日期时间