我的测量应用程序有一个继承自 Matrix 类的 Vector 类,它公开了适用于 1D 矢量类型矩阵的操作。可以预见,即使底层数组不是一维的,也有人会尝试将矩阵向下转换为向量。然后他们不会知道有问题,直到在其中一个 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]);
}
我得到了标题的例外。有什么办法可以避免吗?