Я хотел следовать превосходному совету C ++: один раз вычислить длину массива, а затем использовать значение, не вызывая функцию, подобную этой:
Вместо:
for( int i = 0; i < arr.length; ++i )
Iwrite
const int size = arr.length; // or arr.Count()
for( int i = 0; i < size; ++i )
После прочтения другого потока ( Дорого ли делать array.length или list.count в цикле ) Я заметил, что прирост производительности спорный, и этоC #, а не C ++.
Вторая причина для этого состояла в том, чтобы инициализировать мой массив значением:
const int size = arr.Length;
int[] primes_ = new int[size];
Поэтому мой вопрос таков:
Почему я все равно не могу это объявить?Мне плевать на ошибку:
Error 2 The expression being assigned to 'length' must be constant
Что очень сбивает с толку, потому что мое значение постоянное.Однако когда я удаляю const
, poof отправляет сообщение.... Что?
Инициализация Length читает:
public int Length {get;}
из MSDN.Что особенно сбивает с толку, потому что мой последний вопрос (функциональность Get-Set Accessor отличается наличием ключевого слова get-set) явно дал мне ответ: «Невозможно объявить только get и оставить set отсутствующим».
Мне не понятно, почему я могу объявить int size = arr.Length
, но не const int size = arr.Length
.Почему это так?