最后用对象参考理解

时间:2013-12-01 09:06:50

标签: .net oop object coding-style business-logic

这可能是一个重复的问题,但我没有在网上得到它。我有一个函数,返回类型是数据表。

Function a() returns datatable

Dim DtLocLiecence as datatable
try
--- in this part i get value in the datatable

--and i am now returning datatable 

return DtLocLiecence

catch ex

finally

DtLocLiecence = nothing
end try

end function

现在我们知道datatable是一种意味着的引用类型 对象a = 1 对象b 如果我们写b = a 然后a的参考被保存在b

所以在这种情况下,当我返回datatable对象时,最后如果我写了datatable对象=什么,那么为什么我的返回数据表对象没有得到任何东西。 我得到了正确的结果,但我的问题是,如果数据表对象引用类型,那么为什么我的数据表最终没有得到任何结果。

2 个答案:

答案 0 :(得分:1)

因为在将本地引用设置为null时已经返回了该值。或许将其想象如下可能会帮助您理解正在发生的事情,在假设的语言中,函数的返回值在其参数列表中指定:

Function a(ReturnValue result as datatable) 
    Dim DtLocLiecence as datatable
    try
        --- in this part i get value in the datatable

        --and i am now returning datatable 

        result = DtLocLiecence
        return

    catch ex

    finally
        DtLocLiecence = nothing ' No effect on result
    end try


end function

答案 1 :(得分:1)

考虑一下。执行DtLocLiecence = nothing时,您将使DtLocLiecence无效,而不是实际的DataTable对象。还有一个对实际DataTable的引用可能不那么明显,即函数本身(通过Return语句),它使DataTable不会超出范围,因此被GC收集。