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