我正在使用一個名爲BigNumDesc的類來表示一個數字。我有一組鋸齒數字,代表一個矩陣。 我首先聲明這個矩陣的方式如下:深拷貝參考類型
BigNumDec[][] matrix = new BigNumDec[][] {
new BigNumDec[] { 1, 2 },
new BigNumDec[] { 3, 4 }
};
現在,我有這樣的方法,我想打電話:
static BigNumDec[][] GetStrictlyUpperTriangle(BigNumDec[][] matrix)
{
BigNumDec[][] newMatrix = new BigNumDec[matrix.Length][];
matrix.CopyTo(newMatrix, 0);
return null;
}
我在最後一行一個突破點。如果在監視窗口中,我接受任何矩陣項目並對其進行更改,它將會改變太新的矩陣,因爲所有BigNumDec都是參考類型(來自其創建者的糟糕設計決策?)。我怎樣才能做到這一點?我需要對newMatrix進行修改,所以我必須首先從矩陣中複製它。
編輯:現在嘗試使用整數,但它發生的是一樣的。我會不會發生值類型?
BigNumDec是不可變的。
一個簡單的它適用於整數。它能與BigNumDec一起使用嗎?我會說不。 – 2009-10-23 07:35:30
它似乎工作。現在我很困惑。 – 2009-10-23 07:36:27
你能否解釋一下,爲什麼不可改變或者不會在這裏有所作爲?當它檢測到我想改變它的值時,它是否會在幕後創建一個新的? – 2009-10-23 07:39:13