首页 > 解决方案 > 无法将 MathNet.Numerics.LinearAlgebra.Matrix 定义为 Const?

问题描述

这是 C# 代码:

const MathNet.Numerics.LinearAlgebra.Matrix<Complex32> ket_Zero =
   MathNet.Numerics.LinearAlgebra.Matrix<Complex32>.Build.DenseOfRowMajor(2, 1,
       new MathNet.Numerics.Complex32[] {
           new MathNet.Numerics.Complex32(1,0),
           new MathNet.Numerics.Complex32(0,0)
       } );

如果我不放 const 关键字也没关系。但是,如果我想将其定义为常量,Microsoft Visual Studio 会拒绝

错误代码 CS0133 = 分配给“Form1.ket_Zero”的表达式必须是常量。

我也尝试过替换constreadonly但也不起作用。
如何将矩阵定义为常量?

标签: c#constantsmathnet-numerics

解决方案


这是MSDN中关于可以定义为 const 的文档。我将引用所需的部分。

只有 C# 内置类型(不包括 System.Object)可以声明为 const。用户定义的类型,包括类、结构和数组,不能是 const。

在您的情况下,您尝试定义MathNet.Numerics.LinearAlgebra.Matrix<Complex32>为 const 但它使用声明类型,因此不能const


推荐阅读