我想遵循一次計算數組長度,然後使用一個值的一些優秀的C++的建議,而不必調用一個函數,如下所示:爲什麼Array.Length和Array.Count()不能分配給常量值?
代替:
for(int i = 0; i < arr.length; ++i)
我寫
const int size = arr.length; // or arr.Count()
for(int i = 0; i < size; ++i)
讀完不同的線程(Is it costly to do array.length or list.count in a loop)後,我注意到性能增益並不理想,而且這是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會發送消息。 ...什麼?
長度初始化寫着:
從MSDN public int Length {get;}
。這特別令人困惑,因爲我的最後一個問題(Get-Set Accessor functionality differs on existence of get-set keyword)明確地給了我答案:「不可能宣佈只得到並離開集合缺席。」
我不清楚爲什麼我可以聲明int size = arr.Length
,但不是const int size = arr.Length
。這是爲什麼?
這是一堆問題的重複。簡單的答案是在C#中的const意味着編譯時間常量,而不是在C++中意味着分配一次 – 2010-08-10 17:31:30