【问题标题】:C# syntax question [duplicate]C#语法问题[重复]
【发布时间】:2026-01-07 07:05:02
【问题描述】:

可能重复:
? (nullable) operator in C#

是什么?像这样使用:

class Test
{
    public int? aux;
}

对于更熟悉 c# 的人来说,这可能是一个简单的问题,但我真的不知道要搜索什么。我读了一个解释,但没有完全理解。我也有兴趣知道“??”运营商可以。一些关于它们在哪里有用的例子会很有帮助。

【问题讨论】:

  • 至于??,*上已经有几个问题了。
  • 我确实意识到有很多可能的重复项,但我无法真正搜索到它。寻找可空值当然会起作用,只是我不知道它被称为可空运算符。

标签: c# syntax


【解决方案1】:

这个 (int?) 是 Nullable<int> 的简写。

【讨论】:

  • 你能举个例子说明应该在哪里以及为什么要使用它吗?
  • @Luchian Grigore Nullables 用于将 null 存储到 int 数据类型中。默认情况下,您不能将 null 存储在不可为空的值类型中。比如说,你在一个整数集合中搜索,如果你找不到任何东西,那么就返回 null 说什么也没找到。或者某些第三方 API 返回 int 类型的 null。
【解决方案2】:

它可以是任何 int 值加上一个额外的 null。查看更多信息Nullable Types

使用 Nullable int 的目的是在经常使用数据库操作的同时,在某些情况下某些值可能为 null,我们必须在代码中表示。例如考虑以下模式

Employee

 - id,  bigint, not null
 - name,  nvarchar(100), null
 - locationId,  bigint, null

假设一个员工的locationId不可用,所以在数据库中员工的locationid的值为NULL。在 C# 方面,您知道 int 不能有 NULL 值,因此添加了类型 Nullable int(以及其他一些),因此我们可以很容易地证明 locationId 没有值。

【讨论】:

  • 你能举个例子说明应该在哪里以及为什么要使用它吗?
【解决方案3】:

“?”表示nullable type

【讨论】:

    【解决方案4】:

    int? 表示可为空的整数: aux 可以有一个 int 值或为空!!

    【讨论】:

      【解决方案5】:

      正如许多其他人已经回答的那样,?表示可为空的类型。这意味着int类型的变量?除了整数值之外,还可以分配 null。
      当您想要区分变量未初始化的情况与已分配默认值的情况时使用此选项。
      例如,您可以考虑 bool 的情况。当你声明一个 bool 变量时,它默认为 false 值。这意味着当它的值为 false 时,您无法判断是否会发生这种情况,因为有人已经为变量分配了该值,或者因为没有人触及它。在这种情况下是布尔值?很有用,因为它允许您将“真实”错误值(由某些代码明确分配)与未初始化的情况区分开来。

      【讨论】: