Tôi nhận thấy rằng các mảng có phương thức SetValue, có vẻ như hơi thiếu sót khi bạn chỉ có thể sử dụng các bộ chỉ mục. Có một số mục đích đặc biệt cho SetValue không? Bài viết MSDN dường như không nói những gì SetValue được cho, chỉ cần làm thế nào để sử dụng nó. Phương pháp nào sẽ hiệu quả hơn khi sử dụng hết tốc độ?Sử dụng phương thức SetValue của mảng so với các chỉ mục []
9
A
Trả lời
15
Đôi khi tất cả các bạn có một mảng là nó là Array
. Lớp Array
không có chỉ mục, vì vậy cách tốt nhất để đặt/nhận các giá trị phần tử trên đó là thông qua các phương thức GetValue
và SetValue
. Ví dụ:
private void M(Array array)
{
array[0] = 5; // <-- Compiler error
array.SetValue(5, 0); // <-- Works
}
Ngoài ra, nếu bạn không biết số thứ nguyên của mảng tại thời gian biên dịch, bạn có thể sử dụng quá tải 'SetValue (Object, Int32 [])' để chỉ định các phần tử lúc chạy: http : //msdn.microsoft.com/en-us/library/758awxk7.aspx –
Các chỉ mục bắt đầu ở đâu? Người ta sẽ mong đợi 0, nhưng hôm nay tôi gặp phải một giá trị được trả về từ một thành phần COM với một kiểu .NET của Array, nhưng các chỉ số bắt đầu ở mức 1, không phải là 0 –
@PeterMortensen, COM thực sự là một nơi đáng sợ. :) Nhưng đó là thông tin thú vị. –