Làm cách nào để xác định kích thước của một mảng (độ dài / số lượng mục) trong C #?
Làm cách nào để xác định kích thước của một mảng (độ dài / số lượng mục) trong C #?
Câu trả lời:
Nếu đó là mảng một chiều a
,
a.Length
sẽ cho số phần tử của a
.
Nếu b
là một mảng đa chiều hình chữ nhật (ví dụ int[,] b = new int[3, 5];
:)
b.Rank
sẽ cho số thứ nguyên (2) và
b.GetLength(dimensionIndex)
sẽ nhận được độ dài của bất kỳ thứ nguyên nhất định nào (lập chỉ mục dựa trên 0 cho các thứ nguyên - b.GetLength(0)
3 và b.GetLength(1)
5 cũng vậy).
Xem tài liệu System.Array để biết thêm thông tin.
Như @Lucero đã chỉ ra trong các nhận xét, có một khái niệm về "mảng răng cưa", thực sự không hơn gì một mảng đơn chiều gồm các mảng (thường là một chiều).
Ví dụ, một trong những có thể có như sau:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
Lưu ý rằng 3 thành viên của c
tất cả đều có độ dài khác nhau. Trong trường hợp này, như trước đây c.Length
sẽ chỉ ra số phần tử của c
, (3) và c[0].Length
, c[1].Length
và c[2].Length
sẽ là 3, 2 và 7, tương ứng.
int[][]
:) ;-)
[,]
và [][]
dường như không rõ ràng đối với tất cả người mới .NET, vì vậy có thể vẫn cần lưu ý rằng đó [][]
không phải là một mảng đa chiều theo nghĩa của câu trả lời của bạn.
b.GetLength[0] is 3 and b.GetLength[1] is 5
nên b.GetLength(0) and b.GetLength(1)
.
Bạn có thể xem tài liệu về Array để tìm ra câu trả lời cho câu hỏi này.
Trong trường hợp cụ thể này, bạn có thể cần Chiều dài :
int sizeOfArray = array.Length;
Nhưng vì đây là một câu hỏi cơ bản và bạn chắc chắn có nhiều câu hỏi tương tự như thế này, thay vì chỉ cho bạn biết câu trả lời, tôi muốn cho bạn biết cách tự tìm câu trả lời.
Visual Studio Intellisense
Khi bạn nhập tên của một biến và nhấn .
phím, nó sẽ hiển thị cho bạn danh sách tất cả các phương thức, thuộc tính, sự kiện, v.v. có sẵn trên đối tượng đó. Khi bạn đánh dấu một thành viên, nó sẽ cung cấp cho bạn một mô tả ngắn gọn về chức năng của nó.
Nhấn F1
Nếu bạn tìm thấy một phương pháp hoặc thuộc tính có thể thực hiện những gì bạn muốn nhưng bạn không chắc chắn, bạn có thể di chuyển con trỏ qua nó và nhấn F1 để nhận trợ giúp. Tại đây, bạn sẽ nhận được mô tả chi tiết hơn nhiều cùng với các liên kết đến thông tin liên quan.
Tìm kiếm
Các cụm từ tìm kiếm size of array in C#
cung cấp nhiều liên kết cho bạn biết câu trả lời cho câu hỏi của bạn và hơn thế nữa. Một trong những kỹ năng quan trọng nhất mà một lập trình viên phải học là cách tìm kiếm thông tin. Việc tự tìm câu trả lời thường nhanh hơn, đặc biệt nếu câu hỏi tương tự đã được hỏi trước đó.
Sử dụng một hướng dẫn
Nếu bạn mới bắt đầu học C #, bạn sẽ thấy dễ dàng hơn khi làm theo hướng dẫn. Tôi có thể giới thiệu các hướng dẫn C # trên MSDN. Nếu bạn muốn một cuốn sách, tôi muốn giới thiệu Essential C # .
Tràn ngăn xếp
Nếu bạn không thể tự mình tìm thấy câu trả lời, vui lòng đăng câu hỏi trên Stack Overflow. Nhưng chúng tôi đánh giá cao điều đó nếu bạn cho thấy rằng bạn đã nỗ lực để tự tìm câu trả lời trước.
cho mảng 1 chiều
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
cho mảng đa chiều
int length = listItems.Rank;
Để có được kích thước của 1 chiều
int length = listItems.GetLength(0);
Rank
bất động sản không trả lại số mục, nó sẽ trả về số lượng kích thước.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Đối với mảng một thứ nguyên, bạn sử dụng thuộc Length
tính:
int size = theArray.Length;
Đối với mảng nhiều thứ nguyên, thuộc Length
tính trả về tổng số mục trong mảng. Bạn có thể sử dụng GetLength
phương pháp để lấy kích thước của một trong các thứ nguyên:
int size0 = theArray.GetLength(0);
nó sẽ như thế này: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
sau đó khi bạn sử dụng mảng này:
name[i]=new type[size_of_sec.Dim]
hoặc Bạn có thể khai báo một cái gì đó giống như một ma trận
type[ , ] name=new type [size1,size2]
Những gì đã bỏ lỡ cho đến nay là những gì tôi đột nhiên cảm thấy khó chịu:
Làm cách nào để biết số lượng mục bên trong mảng? Bằng .Length
nhau.Count
của một danh sách?
Câu trả lời là: số lượng vật phẩm kiểu X được đưa vào một mảng kiểu X được tạo ra new X[number]
mà bạn phải tự gánh lấy !
Ví dụ. sử dụng bộ đếm: int countItemsInArray = 0
và countItemsInArray++
cho mọi lần gán cho mảng của bạn.
(Mảng vừa tạo với new X[number]
có tất cả không gian cho number
các mục (tham chiếu) kiểu X đã được cấp phát, bạn có thể gán cho bất kỳ vị trí nào bên trong làm nhiệm vụ đầu tiên của mình, chẳng hạn (nếu number
= 100 và tên biến = a
) a[50] = new X();
.
Tôi không biết liệu C # có chỉ định giá trị ban đầu của từng vị trí bên trong một mảng khi tạo hay không, nếu nó không hoặc giá trị ban đầu bạn không thể so sánh với (vì nó có thể là giá trị mà chính bạn đã đặt vào mảng), bạn sẽ phải theo dõi những vị trí nào bên trong mảng mà bạn đã chỉ định nếu bạn không chỉ định tuần tự bắt đầu từ đó 0
(trong trường hợp đó, tất cả các vị trí nhỏ hơncountItemsInArray
sẽ được gán cho).)
Trong câu hỏi của bạn, kích thước của một mảng (độ dài / số lượng mục) tùy thuộc vào việc / có nghĩa là viết tắt của "thay thế" hay "chia cho", cái sau vẫn phải được bao phủ ("số lượng mục" mà tôi vừa đưa ra là " số lượng mặt hàng "và những thứ khác đã cung cấp .Length
tương ứng với giá trị number
trong mã của tôi ở trên):
C # có một sizeof
toán tử ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Nó an toàn để sử dụng cho các kiểu cài sẵn (chẳng hạn như int) (và chỉ hoạt động trên các kiểu (không phải biến)). Do đó, kích thước của một mảng b
kiểu tính int
bằng byte sẽ là b.Length * sizeof(int)
.
(Do tất cả không gian của một mảng đã được phân bổ khi tạo, như đã đề cập ở trên và sizeof
chỉ hoạt động trên các loại, không có mã nào giống như sizeof(variable)/sizeof(type)
sẽ hoạt động hoặc mang lại số lượng mục mà không cần theo dõi.)