我很难理解可空值类型在 C#9 中的工作原理。
以下文档来自:
我可以写(没有编译器错误):
int? a = 10;
a++; // No need for explicit 'a.Value'
Run Code Online (Sandbox Code Playgroud)
但我不能写(编译器错误):
Span<char> TryFormatOrNull(int? input)
{
char[] buffer = new char[512];
if (input == null) return null;
_ = input.TryFormat(buffer, out _);
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
我需要写(没有语法糖):
Span<char> TryFormatOrNull(int? input)
{
char[] buffer = new char[512];
if (input == null) return null;
_ = input.Value.TryFormat(buffer, out _);
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
我对可空值类型与成员函数/运算符有何误解?
我对可空值类型与成员函数/运算符有何误解?
运算符会自动“提升”(即,不可空值类型的运算符自动可用于相应的可为空值类型),但方法则不然。仅此而已,真的。
有关提升运算符的详细信息,请参阅C# 标准的第 12.4.8 节,有关提升转换的详细信息,请参阅11.6.2。
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |