【问题标题】:Difference between 'int' and 'int?' [duplicate]“int”和“int”之间的区别? [复制]
【发布时间】:2013-07-01 16:50:08
【问题描述】:

“int”和“int”有什么区别?例如:

public int? GoalPR { get; set; }
public int AnchorPR { get; set; }

【问题讨论】:

  • int? 是一个nullable int,它允许值为空。
  • intint?的区别与intNullable<int>的区别完全一样。
  • @gunr2171 道歉。我试着寻找答案。
  • 没有人提到int?只是Nullable<int>o_O的简写
  • @ByteBlast - 嗯...是的,一个人做到了。

标签: c# int


【解决方案1】:

int? 是一个nullable 类型,所以该类型也可以是null

值类型引入这种类型的主要原因,是流畅的支持 DataBase 系统,其中 value: 可以是、可以不存在并且可以是null

实际上有 3 个状态。

因此,与接收并发送到 DB 的数据交互的代码可以顺利处理这种情况,它自己的值类型也假设 null 值。

【讨论】:

  • 啊,好吧,这更有意义。谢谢。
【解决方案2】:

int? 可以是null

int 不能。

这是(几乎)唯一的区别。

【讨论】:

  • 这几乎不是唯一的区别——它们的大小不同,读/写 int 值是原子的,而它们不适用于可为空的 int。
  • @Lee 对于您的第一个:我们没有使用指针。第二个:当然可以,除非您再次使用该值,这是大多数人所做的。
  • 我看不出指针与任何东西有什么关系,第二点,读/写可为空的 int 不是原子的,因此更新 int? 字段的多个线程可能会看到撕裂的读取和写道。例如,请参阅this question
  • @lee 为什么还需要这个尺寸?还有,我知道。但是,当您使用整数时,大多数更改类似于x = someOperations + x 等等。如果你没有在那里使用 Interlocked,那么你就有问题了。
【解决方案3】:

看看documentation for Nullable<T>

int? 只是Nullable<int> 的语法糖

【讨论】:

    【解决方案4】:

    int? 可以为空,int 不能..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多