C# 8 引入了可为空引用类型,这是一个非常酷的特性。现在,如果您希望获得可空值,则必须编写所谓的守卫:
object? value = null;
if (value is null)
{
throw new ArgumentNullException();
}
…
Run Code Online (Sandbox Code Playgroud)
这些可能有点重复。我想知道是否有可能避免为每个变量编写这种类型的代码,而是有一个保护类型的static void函数,如果 value is 则抛出异常,null或者如果 value is not 则返回null。或者这对编译器来说太难推断了?特别是如果它是外部库/包?