完成后如何处理

本文关键字:处理 何处理 | 更新日期: 2023-09-27 17:58:53

我想在函数完成后处理实例。我认为。。。

此外我想将每个名称添加到一个数组中。

我试试:

      using(  Database db = new Database())
    public string[] FindNameByLength(int minimumCharNumber)
    {
        try{
        var query = from u in db.Users
                    where u.FullName.Length > minimumCharNumber
                    select u.FullName;

        string[] namesLength;
        int counter;
        foreach (var s in query)
        {
            namesLength.Concat(new[] {s });
        }
        return namesLength;
        }
        finally IDisposable(db).dispose();
    }
}

完成后如何处理

放入

using(...)
{
    ...
}

在您的功能内。也不要显式调用Dispose

public string[] FindNameByLength(int minimumCharNumber)
{
    using (Database db = new Database())
    {
        var query = from u in db.Users
                    where u.FullName.Length > minimumCharNumber
                    select u.FullName;
        string[] namesLength;
        int counter;
        foreach (var s in query)
        {
            namesLength.Concat(new[] { s });
        }
        return namesLength;
    }
}

这里也不需要Finally,因为无论您如何退出using作用域(return,exception,}),都将始终调用Dispose

引用语句:提供一种方便的语法,确保正确使用IDisposable对象。

通常,当您使用IDisposable对象时,您应该在using语句中声明并实例化它。using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用它时)一旦调用Dispose,它还会导致对象本身超出作用域。在使用块中,对象是只读的,不能修改或重新指定。

using语句确保即使在对对象调用方法时发生异常,也会调用Dispose。您可以通过将对象放入try块中,然后在finally块中调用Dispose来获得相同的结果;事实上,编译器就是这样翻译using语句的

因此,要么使用使用块

using (Database db = new Database())
{
}

或者,您可以使用try finally

  Database db = new Database();
  try
  {
  }
  finally
  {
    if (db != null)
      ((IDisposable)db).Dispose();
  }