Не удается определить MathNet.Цифры.LinearAlgebra.Matrix как Const?

#c# #constants #mathnet-numerics

#c# #константы #mathnet-numerics

Вопрос:

Вот код 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’, должно быть постоянным.

Я также пытался заменить const на readonly , но тоже не сработает.
Как я могу определить матрицы как константы?

Комментарии:

1. Почему именно readonly не работает? В чем ошибка?

2. Если я использую только для чтения, Visual Studio отклоняет с кодом ошибки CS0191 = Поле только для чтения не может быть назначено (за исключением конструктора или инициализатора переменной)

3. Является ket_Zero полем класса?

4. ДА. Определение является глобальным в системе. Windows. Класс формы Form1. Я только что узнал, что работает только для чтения, и ошибка, которую я получил ранее, заключается в том, что после того, как я определил ее как доступную только для чтения, другая часть программы попыталась переопределить ее. Извините. Просто вторая копия тех же строк в методе (вызывающем ошибку), который я использовал ранее, прежде чем пытаться поместить его в глобальный контекст. В итоге работает только для чтения, но const вызывает ошибку.

Ответ №1:

Вот документация из MSDN о том, что может быть определено как const. Я процитирую необходимую часть.

Только встроенные типы C # (исключая System.Объект) может быть объявлен как const. Пользовательские типы, включая классы, структуры и массивы, не могут быть const.

В вашем случае вы пытаетесь определить MathNet.Numerics.LinearAlgebra.Matrix<Complex32> как const, но используется объявленный тип, поэтому не может быть const

Комментарии:

1. @Avon, я рад быть полезным