【问题标题】:What does the statement "int? i1 = i2" do in c#? [duplicate]语句“int?i1 = i2”在c#中做了什么? [复制]
【发布时间】:2015-01-16 00:43:32
【问题描述】:

我一直在阅读 c# 教程,其中提到了可空类型,并且在特定的上下文中我已经完成了这个示例

int? i1 = i2;

我无法理解它的具体作用和含义。

【问题讨论】:

  • i2的定义是什么?
  • 这行代码让您感到困惑的是什么?你知道声明一个变量是什么意思吗,你知道一个变量在声明的时候初始化是什么意思吗?你不明白类型是什么?你不明白分号有什么用,还是什么?当您只是提供一些代码并说“解释”而不指定您不理解的内容时,这个问题实际上是无法回答的。

标签: c#


【解决方案1】:

这意味着,声明一个可以为空的int 类型并为其分配i2 的值。

因为i1 具有可空类型int?,所以i2 可以是int 文字,如@9​​87654327@、int 类型的变量、int? 类型的变量或文字值@987654330 @。

【讨论】:

    【解决方案2】:

    它创建一个可为空的整数。这意味着您可以设置i1 = null; 并轻松测试其无效性i1.HasValue

    【解决方案3】:

    int? i1 表示i1 变量可以是null 表示可为空的变量,并且无论i2 中的值是什么,您都将i2 分配给它。

    例如:

    如果我有这样的方法:

    public int sum(int? num)
    {
    return 1;
    }
    

    int? 表示num 可以作为null 传递,而不是有效的integer

    Nullable Types in C#

    【讨论】:

    • 它是强制性的,它只允许再传递一个值(null)。可选的看起来像int? num = 1
    • 可选我的意思是可以传递null
    • 我编辑了它以防止混淆
    【解决方案4】:

    语义相同

    Nullable<int> i1 = i2
    

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 2016-10-17
      • 2018-09-01
      • 1970-01-01
      • 2014-12-22
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      相关资源
      最近更新 更多