gpt4 book ai didi

c# - 有什么方法可以让 visual studio 忽略使用未分配对象的编译错误?

转载 作者:行者123 更新时间:2023-11-30 18:48:54 24 4
gpt4 key购买 nike

我的代码基本上看起来像这样(它实际上不是对象,而是一个自定义类):

object thing
try {
thing = new object();
......

} catch { stuff }
finally {
if (thing != null) { some clean up code }

但是 VS 不允许我这样做,因为它说我正在引用一个未分配的变量。我很清楚当这段代码运行时它可能会被取消分配,这就是空检查存在的原因。我不想在 try block 之外实例化对象,因为它做了一些事情并且可能会抛出异常,我宁愿不要将整个对象包装在另一个 try/catch 中 block 只是为了我可以在那里实例化它。还有什么我可以做的吗?

最佳答案

“未分配”与“空”不同。您的代码根本无效 - 您需要修复它。

这里非常简单 - 只需将变量初始化为 null 即可开始:

object thing = null;

现在它肯定会有一个值(空引用),因此您可以在 finally block 中读取它。

要点是,在编译器可以证明某个值(无论是否为 null)已明确赋值之前,局部变量不能被读取。实际上,局部变量没有“默认值”。

(请注意,我通常使用 IDisposable 来清理代码,同时使用 using 语句。)

关于c# - 有什么方法可以让 visual studio 忽略使用未分配对象的编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394701/

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