如何通過值而不是引用交換兩個類物件?

2022-07-23 21:48:20 字數 1291 閱讀 3047

stackoverflow

使用語言:vb.net

原網頁:

我想交換list中有兩個引用型別物件的,而不是引用。比如,list1(1)在交換前後引用了乙個相同的物件,但物件值已經改變。

如果通過這種方式交換

dim someclass1 as new someclass  

dim someclass2 as new someclass

arraylist1(1) = someclass1

arraylist1(2) = someclass2

temp = arraylist1(1)

arraylist1(1) = arraylist1(2)

arraylist1(2) = temp

這樣只交換了引用arraylist1(1)引用了someclass2物件,但是我想要的效果是它依然引用someclass1同時擁有someclass2的值。

你需要自己乙個個複製屬性。你可以在你的類裡新增兩個方法讓這更簡單一些。

public class sampleclass

public property id as integer

public property name as string

public function clone() as sampleclass

return new sampleclass with

end function

public sub init(input as sampleclass)

with me

.id = input.id

.name = input.name

end with

end sub

public shared sub swapvalues(value1 as sampleclass, value2 as sampleclass)

dim temp = value1.clone()

value1.init(value2)

value2.init(temp)

end sub

end class

關於如何通過Swap函式交換兩個變數的值

資料交換在c語言中十分常見。作為初學者首先學的應該都是如下方式 int main 這種交換如果放在乙個函式中沒錯,但如果將它們分別放在子函式和主函式中就會發生錯誤。錯誤示例1 void swap int a,int b int main 其結果是列印出來的a,b值並沒有交換。這是因為在子函式中定義的...

通過Swap函式交換兩個變數的值

正確 void swap int p1,int p2 定義乙個整形變數tmp,p1 a p2 b,首先在tmp裡存入a的值,然後將b的值賦給a,再將tmp裡的值賦給。這樣就完成了a與b兩個數的交換。我們經常會發現自己寫出的程式並不能達到我們的要求,在寫這類題的時候我們也可能寫過以下三種錯誤的編寫方式...

php比較兩個變數的值 php如何交換兩個變數的值

本篇文章主要給大家介紹php交換兩個變數的值的具體實現方法。交換兩個變數是指相互交換變數的值。通常,這是通過記憶體中的資料完成的。交換兩個變數的方法有兩種 下面我們就通過具體的 示例為大家介紹php交換兩個變數值的方法。方法一 使用第三個變數交換兩個數字 如下 a 15 b 27 echo 交換前的...