gpt4 book ai didi

c# - 为什么我不能在 try block 中分配对象变量?

转载 作者:行者123 更新时间:2023-11-30 19:00:21 25 4
gpt4 key购买 nike

为什么我不能在 try block 中分配对象变量?

如果我尝试这样做并清理 finally block 中的变量,我会收到编译器错误:“使用未分配的局部变量”。这是没有意义的,因为变量是在 try block 之前声明的,而在 finally block 中,我首先检查变量是否为 null

为什么下面的代码不能编译?我正在检查 dbc 是否为 null,因此它不可能尝试对未分配的变量执行某些操作。

例如:

DbConnection dbc;
try {
dbc = <some method call returning an open DbConnection>
// do stuff
} catch (Exception e) { // do stuff }
finally {
if (dbc != null) {
dbc.Close();
}
}

最佳答案

将您的声明更改为 DbConnection dbc = null; 以便编译器可以确定该变量已分配。 (仅仅声明 dbc 与为其分配 null 值不同,您必须使用本地显式。)

您现有代码失败的原因是在设置 dbc 之前完全有可能发生异常。因此,编译器不能假设 dbc 是在 finally block 执行时分配的。

有关详细信息,请参阅有关明确分配的语言规范的第 5.3 节。

http://msdn.microsoft.com/en-us/library/aa691172(VS.71).aspx

关于c# - 为什么我不能在 try block 中分配对象变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454994/

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