在 C# 中,类型定义中的问号(?)主要用于控制类型的可空性,但具体行为因类型(值类型或引用类型)和 C# 版本而异。以下是清晰分类的说明:
一、可空值类型(T?,适用于所有 C# 版本)
用途:允许值类型(如 int、DateTime 等)存储 null 值。
语法:在值类型后加 ?,底层由 System.Nullable<T> 结构实现。
示例:
int? age = null; // 声明可空整型 DateTime? date = null; // 声明可空日期
核心操作:
- 判空:通过
HasValue属性检查是否有值。if (age.HasValue) Console.WriteLine(age.Value); - 安全取值:使用
??提供默认值,避免InvalidOperationException。int safeAge = age ?? 0; // 若 age 为 null,返回 0 - 强制转换:直接将
int?赋值给int会报错,需显式转换。int value = (int)age; // 若 age 为 null,抛出异常
适用场景
C#中类型定义里问号(?)的使用

最低0.47元/天 解锁文章
995

被折叠的 条评论
为什么被折叠?



