创建自定义语法错误,而不是使用运行计时器错误/异常

时间:2018-09-24 09:07:28

标签: c# visual-studio

我想在编译代码之前验证方程式,并防止其成功编译。因此仍在编辑器中。这是我想做的一个例子:

public static Matrix operator + (Matrix A, Matrix B)
    {
        if (A.length != B.length || A.width != B.width)
            throw new InvalidOperationException("Matrix A must be the same size as matrix B");

        // Do things
    }

如果我编写C = A + B;并进行编译,将抛出异常。我希望它在编译之前进行验证并在控制台中显示错误消息。

1 个答案:

答案 0 :(得分:0)

无法实现您想要的。假设您允许用户输入具有任意尺寸的矩阵。然后,编译器已经完成了工作,无法知道用户选择的尺寸。因此,如果两个矩阵具有兼容的维,则编译器将无法验证。您可能可以编写一个执行静态代码分析并报告尺寸不匹配的分析器,但无法找到全部分析器,我怀疑编写一个分析器是否值得。

由编译器强制执行此行为的唯一方法是为每个维创建不同的类型。但我强烈建议您不要这样做。