最后是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()代码>是否将处置myobj1.dataTable
?或者它将具有正确的数据?是假设obj1。dataTable
引用了您在Function1
中创建的同一对象,它将被释放<代码>最终
始终执行块,无论是否引发异常
有关try finally块的更多信息。阅读此@Yogesh-是的,它将被释放,因为您调用
DataTable.Dispose()
,并将DataTable
作为引用传递。从技术上讲,您应该在try
块之外声明和初始化dt
。如果构造失败,您就不想处理它,如果它没有失败,就没有理由在try/finally
中围绕该行。(这也是使用存在的原因)谢谢Nikhil,你发布的链接真的很有用。