最后是c#引用类型

最后是c#引用类型,c#,C#,我不知道这将如何工作: public Class1 Function1() { DataTable dt; try { dt = new DataTable(); //.. Do some work return new Class2(byref dt); } finally { dt.dispose(); } } public Class2(byref DataTable dTable) { thi

我不知道这将如何工作:

public Class1 Function1()
{
   DataTable dt;
   try
   {
     dt = new DataTable();
     //.. Do some work
     return new Class2(byref dt);
   }
   finally
   {
      dt.dispose();
   }
}


public Class2(byref DataTable dTable)
{
    this.dataTable = dTable;
}

那么,现在如果我说
class1obj1=Function1()是否将处置my
obj1.dataTable
?或者它将具有正确的数据?

是假设
obj1。dataTable
引用了您在
Function1
中创建的同一对象,它将被释放<代码>最终
始终执行块,无论是否引发异常


有关try finally块的更多信息。

阅读此@Yogesh-是的,它将被释放,因为您调用
DataTable.Dispose()
,并将
DataTable
作为引用传递。从技术上讲,您应该在
try
块之外声明和初始化
dt
。如果构造失败,您就不想处理它,如果它没有失败,就没有理由在
try/finally
中围绕该行。(这也是
使用
存在的原因)谢谢Nikhil,你发布的链接真的很有用。