2
我的測量應用程序有一個從類Matrix繼承的Vector類,它暴露適合於一維向量類型矩陣的操作。更可怕的是,即使底層數組不是一維,也有人會嘗試將矩陣向下轉換爲向量。然後,在Vector操作之一發生異常之前,他們不會知道有問題。但如果我嘗試實施演員表,即:既然「不允許用戶自定義轉換到派生類或從派生類轉換,」在我的情況下是否有一個不錯的選擇?
public static explicit operator Vector3(Matrix m)
{
if (m.Array.GetLength(0) != 3 && m.Array.GetLength(1) != 1)
throw new InvalidCastException("The matrix dimensions are invalid.");
return new Vector3(m[0, 0], m[1, 0], m[2, 0]);
}
我得到標題的例外。有什麼辦法可以避免它?
感謝您的知識豐富的迴應。什麼樣的矢量不是矩陣? – 2013-02-25 18:30:29
@BrandonArnold:實際上這意味着「不是所有的矩陣都是矢量」,這當然不會描述你的層次結構。所以讓我們假裝那部分從未發生過。 ;-) – Jon 2013-02-25 18:32:21
哈哈,哦,我明白了。 – 2013-02-25 18:35:31