C# 使用关键字会导致对象超出范围
为什么在if语句中使用对象C# 使用关键字会导致对象超出范围,c#,.net,memory-leaks,idisposable,C#,.net,Memory Leaks,Idisposable,为什么在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;
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;
}
}
}
您没有正确使用
using
语句,您需要的是:
using(hello ok = new hello())
{
hello no = new hello();
if( ok == no )//Point 1
{
ok = no;//Point 2
}
}//Point 3
一些要点(见上述评论):
中使用的变量
ok
将超出范围,它也将在此时被处理,假设它实现了IDisposable-我认为如果它不实现IDisposable,它将不会编译总的来说,您似乎试图做的事情没有多大意义。objectOK将在这里读取
使用作用域后处理,但您需要在{}中的using语句之后放上{
括号来定义作用域并实现IDisposableEncase。例如-using(var a=new b()){if(a==1)a=2;};您的使用块需要包装在{…}