我想警告编译器有关外部代码可能出现的空值

I want to warn the compiler about possible nulls from external code

在下面,C# 确信 'property' 永远不会为空,但我知道它可以,因为外部库不是使用 C#8/可空类型生成的:

#nullable enable
SomeExternalClass obj = GetSomeExternalObjectFromAnOldAPI();
SomeExternalProperty property = obj.SomeProperty;
DoStuff(property); // C# is confident that property is not null, here

条件截图如下:

执行以下操作也不会提供空警告。 C# 仍然自信地假设外部 API 是完全不可空的:

#nullable enable
SomeExternalClass obj = GetSomeExternalObjectFromAnOldAPI();
SomeExternalProperty? property = obj.SomeProperty;
DoStuff(property); // C# is still confident that property is not null, here

有没有一种方法可以强制 C# 确认变量可能为空,即使它确信它不会为空?的对立面!象征。 'Trust me, this garbage can be null..'

已解决。接受的答案:

#nullable enable
SomeExternalClass obj = GetSomeExternalObjectFromAnOldAPI();
SomeExternalProperty? property = obj.SomeProperty ?? null;
DoStuff(property); // C# is now warning about possible null

尝试:

ElementId? viewTemplateId = (revitView.ViewTemplateId ?? someNullTypeOfYourChoosing);

或者,允许 ViewrevitView.ViewTemplateId 结构是 nullable/return 可空类型。

你可以写一个方法‘void MaybeNull([System.Diagnostics.CodeAnalysis.MaybeNull] T t)’并使用它。