2013-04-02 140 views
0

我有一個對象,其中包含其保持最新的其他對象。 如果我將其中一個子對象傳遞給另一個類的構造函數,這是否保存爲一個指針,並且與正在更新的對象相同?傳遞對象引用

在下面的代碼存根(stub)中,我使用了EventDetails對象。我不需要在ResultsTreeViewEvent中修改它。

EventDetails eventDetails = raceDay.GetEvent(meeting, race); 
ResultsTreeViewEvent newEvent = new ResultsTreeViewEvent(meet.name, eventDetails, ref treeView, fullPage, true); 


public class ResultsTreeViewEvent 
{ 
    public EventDetails race = null; 

    public ResultsTreeViewEvent(String aMeetingName, EventDetails aRace, ref TreeView aTreeView, Boolean aFullPage, Boolean aShowMultiLegResults) 
    { 
     race = aRace; 
    } 
+1

對於這類問題,建立一些自己的課程並檢查自己真的很不錯。你總是用這種方式學習一些有趣的事 – Letterman

回答

6

如果我通過這些子對象中的一個到另一個類的構造是這樣保持爲指針,因此相同的對象被更新?

那麼,它保存爲參考 - 如果對象是通過任何引用的更新,這些變化的確會通過其他的引用可見的,是的。你做不是需要使用ref。 (目前還不清楚你想用aTreeView做什麼,但你幾乎肯定不想要或需要參考)。

參考文獻和指針在某些方面非常相似,但aren't the same。 (C#確實有一個指針,不安全的代碼,但你很少使用。)

見我上reference and value typesparameter passing in C#文章以瞭解更多信息。

+0

謝謝你,我有一個問題,偶爾的對象似乎沒有更新,我需要確定我的假設。順便說一句,該對象被設置爲treeview.TreeNode.Tag,所以我可以在遍歷樹時檢查某些信息。 –

+0

@BrianHewitson:我懷疑你會發現在那些情況下你使用的是'struct'而不是'class'。他們的行爲不同,你應該徹底理解。如果你看到任何其他特殊的行爲,你應該從你的程序中提取出來,並用一個簡短但完整的例子來問他們,在一個單獨的問題 - 我相信我們會很樂意幫助你。 –