2011-03-30 59 views
0

我有一個對象命名post和我聲明名爲newPost作爲post型對象的新變量,然後如何創建對象的副本?

變種newPost =張貼

但是當我修改post對象的任何屬性,即改性影響newPost對象的屬性。

我該如何解決這個問題?

+0

我的建議是,您首先做一些小作業:http://stackoverflow.com/questions/129389/how-do-you-do-a-deep-copy -an-object-in-net-c- – 2011-03-30 11:59:57

回答

0

您需要提供某種方法來克隆該對象。正如其他評論者所說,你只是引用同一個對象。關於詳細信息,請參閱此StackOverflow問題(第一個答案)Deep cloning objects

0

這是一個非常基本的問題,我不能在上面寫一本書......

但是,這是究竟應該如何工作。你正在設置'參考'變量; newPostpost都指的是完全相同的對象,它是class,因此也是引用類型,因此您應該期望所有更改都會影響另一個。

這聽起來像你需要拿起一本好的基礎.NET編程書,並且要特別注意Value和Reference類型之間的差異。 '解決方案'是創建一個新對象,並將舊對象的各個成員設置/複製到新對象,但是我擔心解決方案不會爲您提供太多時間,然後再深入研究一些事情。

+0

你是一個有趣的人,謝謝你 – user667429 2011-03-30 12:19:43

5

你需要做的是一些可能的事情之一。這裏有一對夫婦需要考慮。

  1. 實施IClonable做var newPost = post.Clone();
  2. 有一個構造上有 另一個實例作爲paramenter, 然後屬性從 實例中傳遞給新 實例複製類。即var newPost = new Post(post);

有一個問題看出來的,你可能會想要做什麼作爲對象的deep clone or deep copy,所以,如果你的類有兩種情況不指向同一個參考的任何對象屬性爲他們的屬性。

相關問題