为什么在if语句中使用对象ok
超出范围?以及如何处置对象ok
?
public class hello : IDisposable {
}
public class hi{
private void b()
{
using(hello ok = new hello());
hello no = new hello();
if( ok == no )
{
ok = no;
}
}
}
答案 0 :(得分:2)
您没有正确使用using
语句,您想要的内容如下:
using(hello ok = new hello())
{
hello no = new hello();
if( ok == no )//Point 1
{
ok = no;//Point 2
}
}//Point 3
一些要点(见上述评论):
这永远不会成立,因为你有两个不同的实例。 除非,否则该类已重写了等号运算符
这是无效且无法编译,您无法重新分配using
语句中使用的变量
此处ok
将超出范围,此时也将处理它,假设它实现了IDisposible - 我认为如果它没有'它将不会编译'无论如何都要实施IDisposable
总的来说,你似乎想要做的事情根本没有多大意义。