You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中代码“string?”里的问号“?”有什么作用?

C#中string?里问号的作用

这个问号是C# 8.0及以后版本引入的**可空引用类型(Nullable Reference Types)**标记,核心作用就是明确告诉编译器:这个引用类型变量允许被赋值为null。

具体来说:

  • 在默认启用可空引用类型的项目里,普通的string会被编译器视为「非空引用类型」——如果你给它赋值null,或者在没判空的情况下直接调用它的成员(比如Length),编译器会抛出警告,帮你提前规避空引用异常。
  • 加了?的string?则是「可空引用类型」,编译器允许你给它赋值null,同时会提醒你在使用它的成员前先做null判断,避免运行时崩溃。

举个实际代码例子:

// 普通string赋值null,编译器会警告
string nonNullableStr = null; // 警告:不可将null字面量分配给非可空引用类型

// string?可以正常赋值null,无警告
string? nullableStr = null;

// 使用string?时,编译器会要求先判空
if (nullableStr != null)
{
    Console.WriteLine(nullableStr.Length); // 安全,不会触发空引用异常
}

// 如果直接调用nullableStr.Length,编译器会警告可能的空引用

简单说,这个问号就是给编译器和其他开发者一个明确提示:这个字符串变量可能是null,处理的时候要留点心。

内容的提问来源于stack exchange,提问作者Nizam Bhagaskara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:22:03