2013-06-10 29 views
9

Từ các tài liệu MSDN vào phương pháp Array.Copy:Array.Copy luôn là hàng chính?

Khi sao chép giữa các mảng đa chiều, mảng hoạt động như một mảng một chiều dài, nơi các hàng (hoặc cột) được khái niệm đặt đầu đến cuối. Ví dụ, nếu một mảng có ba hàng (hoặc cột) với bốn phần tử, sao chép sáu phần tử từ đầu mảng sẽ sao chép tất cả bốn phần tử của hàng đầu tiên (hoặc cột) và hai phần tử đầu tiên của hàng thứ hai (hoặc cột).

Tôi luôn cho rằng, trong C#, hai chiều mảng được đặt ra trong row-major order (và tương tự cho kích thước cao hơn), vì vậy tôi đang bối rối về ý nghĩa của các ngoặc “hoặc cột” ở trên tài liệu. Điều đó có nghĩa là có thể có trường hợp .NET Framework sử dụng thứ tự cột lớn?

+2

Khá khó hiểu. Có lẽ họ chỉ đang cố gắng che giấu trường hợp (#rows == 1). Tôi khá chắc chắn nó luôn luôn được sao chép theo thứ tự hàng lớn. Nếu không, sự hỗn loạn xảy ra! –

+1

Đó là những gì tôi nghĩ ban đầu, nhưng nó không giữ cho "ba hàng (hoặc cột) với bốn phần tử mỗi phần". Dự đoán hiện tại của tôi là nó được diễn đạt theo cách đó cho những người chuyển đổi định nghĩa của hàng và cột. – Douglas

+4

Tôi nghĩ rằng nó đang cố gắng trở thành thuyết bất khả tri hàng/cột lớn; nó không quan tâm cho dù bạn tưởng tượng chỉ mục đầu tiên của bạn có nghĩa là hàng hoặc cột. – Rawling

Trả lời

10

I nghi ngờ nó chỉ đơn thuần cố gắng truyền đạt rằng một mảng không phải là hình chữ nhật - nó là một không gian tuyến tính đơn. Bất kỳ khái niệm nào về "hàng" hoặc "cột" thực sự là phát minh của người dùng. Không có hàng và không có cột; bất kỳ quy ước nào dọc theo các dòng arr[x,y] là "hàng x, cột y" hoặc "cột x, hàng y" hoàn toàn là: một quy ước; một phần của trí tưởng tượng của chúng tôi trong khái niệm một cái gì đó. Thứ tự thực sự duy nhất là chỉ mục nào được điều hướng trước tiên. Cái đầu tiên? hoặc cuối cùng?

Cho dù bạn gọi là "hàng" hoặc "cột" tùy thuộc vào bạn và có các ví dụ về cả hai được sử dụng trong tự nhiên.

+0

Tôi đồng ý, mặc dù việc thiếu lời giải thích thêm làm cho bài viết trở nên khó hiểu hơn là nếu chúng đi theo quy ước '[hàng, cột]' chủ đạo. – Douglas

+1

Ngoài ra, bạn có thể trỏ đến bất kỳ tài nguyên hoặc ấn bản trực tuyến nào mà chỉ mục đầu tiên được gọi là cột không? Tôi không nhớ đã đi qua quy ước đó. – Douglas

+0

@Douglas: Có một FORTRAN cho .NET. Trong FORTRAN, các mảng là cột lớn. Vì vậy, bất kỳ tài liệu nào cho ngôn ngữ đó sẽ gọi chỉ mục đầu tiên là "cột". –

Các vấn đề liên quan