C#可否将方法放入using语句中?

4

我正在尝试一些不同的方法。我不确定是否可以在方法上方使用using()语句,或者是否有其他方法解决该问题。

public class Main 
{
    public Main() 
    {
      using(Type t = new Type) 
      {
        public void SomeFunction() {
             t.toString()}
      }
    }
}

1
如果这个方法可行,那么t的作用域是什么?它何时被创建和释放?只有这个函数吗?如果是,为什么不把它放在函数内部呢? - Scott Chamberlain
1个回答

9
这是不可能的,但您可以像这样做:
 using(Type t = new Type) 
 {
    SomeFunction(t);
 }

 public void SomeFunction(Type tType) 
 {
    tType.ToString();
 }

注意:如果类Type实现了IDisposable接口,那么t将被传递给SomeFunction()并在使用块的}处被处理。因为Using语句以正确的方式调用对象的Dispose方法,并且(当您按照先前显示的方式使用它时)还会导致对象本身在调用Dispose后立即超出范围。


能否将整个类放在using语句下面? - Joshua Belarmino
不行,但可以使用变量创建其对象;再次注意,该类应实现IDisposable。 - sujith karivelil
从C# 8.0开始,您可以忽略Using语句的大括号使用。 - Majid Shahabfar
如果我们忽略 using 语句中的大括号,那么该语句会在哪里结束呢?我的意思是,在什么时候对象 t(例如上面的例子)会被处理?@MajidShahabfar - nam
在变量t的作用域结束时(这里是方法的末尾),将调用Dispose方法。 - Majid Shahabfar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接