当前位置: 首页 > news >正文

可空引用类型

C# 8.0 引入的"编译时防呆机制"。给引用类型(string、class 等)贴上标签:
string = 不可空,必须有值,赋 null 编译器会警告你
string? = 可空,允许为 null,使用时编译器会提醒你做检查
注意:这是编译时检查(写代码时 IDE 标黄线),不是运行时特性。目的是帮你提前发现"空引用异常"。

——————————————————————————————————————————————————————————————————————————

如何开启?
在代码文件最顶部加一行:

nullable enable

——————————————————————————————————————————————————————————————————————————

案例 1:变量声明 —— 贴标签防呆
csharp

nullable enable

string name = "张三"; // 不可空:必须有值
string? nickname = null; // 可空:允许为 null

// name = null; // ❌ 编译警告:不能给不可空变量赋 null

Console.WriteLine(nickname ?? "无昵称"); // 输出:无昵称

——————————————————————————————————————————————————————————————————————————

案例 2:方法参数 —— 调用前就知道能不能传 null

nullable enable

void SayHello(string name) // 参数不可空:调用时必须传值
{
Console.WriteLine($"你好,{name}");
}

void Log(string? message) // 参数可空:调用时可以传 null
{
Console.WriteLine(message ?? "(无日志)");
}

SayHello("张三"); // ✅
// SayHello(null); // ❌ 编译警告!
Log(null); // ✅ 允许

——————————————————————————————————————————————————————————————————————————

案例 3:返回值 —— 调用方知道可能拿到 null

nullable enable

string? FindUser(int id) // 返回值可能为 null
{
return id == 1 ? "张三" : null;
}

string user = FindUser(2) ?? "未知用户"; // 用 ?? 兜底,防止 null
Console.WriteLine(user); // 输出:未知用户

http://www.jsqmd.com/news/1316485/

相关文章:

  • Linux下eMMC与SD卡底层管理:从分区格式化到故障排查实战
  • 量子电池:从量子纠缠到超吸收的下一代能量存储技术
  • 2026年上海杨浦区橱柜维修全流程解析与优质服务选择指南 - 匠心24小时快修
  • PingFangSC字体实战指南:企业级中文字体解决方案深度解析
  • Octafuse Gateway 2.1 发布:不只管大模型,Agent 的每一次工具调用也都管起来!
  • 苹果产品线涨价背后的商业逻辑与行业影响分析
  • AI编程助手时代:从代码实施者到问题定义者的工程师转型
  • 如何用AI智能工具layerdivider一键分离插画图层?
  • 如何高效获取国家中小学智慧教育平台电子教材PDF:智能解析下载工具完全指南
  • 如何实现微信聊天记录永久保存:WeChatMsg开源工具终极指南
  • Android设备信息获取全解析:从Build类到生产级工具类实现
  • 提示词写不好=浪费GPU小时!,SD生成效率暴跌63%的元凶竟是这6个语法陷阱
  • 李永慧律师(北京恒略律师事务所)16601232889(微信同号) - 北京普法者
  • NotchSolution终极指南:解决Unity移动端刘海屏布局难题的完整方案
  • YimMenu游戏修改器:GTA5终极DLL注入安全防护完整指南
  • 2026 深圳搬家收费标准详解:各类附加费汇总,靠谱搬家品牌盘点与防坑指南 - 禧燕搬家
  • ADB文件传输自动化:批处理脚本实战与避坑指南
  • 提升android-yolo检测性能:20类Pascal VOC目标识别优化技巧
  • 大模型迭代策略与工程实践:从分批发布到科学评估的完整指南
  • 3步解锁Python PDF处理终极能力:pypdf实战探索指南
  • RFID卡片克隆教程:使用ESP32-Bit-Pirate复制UID卡
  • AI眼镜独立化革命:从硬件架构到应用开发的全面解析
  • 洛谷P2032 扫描
  • 【智元机器人技术解析】本体、数据与具身大模型如何走向规模部署
  • 跑了长沙5家商圈店,食材品质好的火锅吃着确实舒服
  • android-yolo震撼发布:首个基于TensorFlow的Android实时目标检测应用
  • PyPDF2技术架构深度解析:高效PDF处理的实现原理与性能优化
  • 美光市值跃迁背后:HBM技术如何重塑AI硬件生态与存储行业格局
  • Windows平台PDF处理方案:Poppler-Windows技术实现与应用指南
  • 旧金山百万年薪为何仍租不起房?成本解构与生存策略