在声明变量为var时排除空值



我从7.0版开始就远离c#了,一直在尝试f#。

我想写一些代码和(像f#)尝试排除null,所以我对c# 8.0后的可空功能感兴趣,但我不明白如何使用'var'尚未声明为不可空的东西

IEnumerable<int> ys = Enumerable.Range(1,10);
ys = null; // error converting null value to non null

this,显然是无效的,因为我已经明确地排除了null - brilliant,这是我几乎总是想要做的。

但是如果我写这个

var ys = Enumerable.Range(1,10);
ys = null;

是允许的。(我还以为是var呢?

我如何使用var(即允许类型推断),但不允许空值?

如果您使用的是较新版本的c#,请将以下内容放在代码的顶部:

#nullable enable

这将导致您在某些不应该为空的内容可能为空时获得警告。然而,这是一个警告,而不是一个错误。

同样,如果您非常关心类型,您可能希望避免使用var并显式地编写您想要的类型。这将给你最大的控制。

最新更新