gpt4 book ai didi

c# - 我想警告编译器有关外部代码中可能存在的空值

转载 作者:行者123 更新时间:2023-12-02 02:38:53 25 4
gpt4 key购买 nike

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

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

这是条件的屏幕截图:

Failure 1

执行以下操作也不会提供空警告。 C# 仍然自信地假设外部 API 是完全不可为空的:
#nullable enable
SomeExternalClass obj = GetSomeExternalObjectFromAnOldAPI();
SomeExternalProperty? property = obj.SomeProperty;
DoStuff(property); // C# is still confident that property is not null, here

Failure 2

有没有一种方法可以强制 C# 承认一个变量可能为空,即使它应该确信它不会?反之!象征。 “相信我,这个垃圾可以是空的……”

解决。接受的答案:
#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结构为可为空/返回可为空类型。

关于c# - 我想警告编译器有关外部代码中可能存在的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61112778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com