C #의 배열 크기 (길이)


98

C #에서 배열의 크기 (길이 / 항목 수)를 어떻게 확인할 수 있습니까?


1
@Marcelo : ...하지만 여전히 "내 안경은 어디에 있습니까?"와 같은 간단한 질문에는 답할 수 없습니다. ;)
Guffa

2
"크기"란 무엇을 의미합니까? 요소 수 또는 크기 (바이트)?
Fredrik Mörk

2
@fearofawhackplanet 나는 Length를 찾는 것과 같은 문제가 다차원 배열에서 작동하지 않았고이 질문의 결과로 Rank 및 GetLength (index)를 발견했기 때문에 upvoted했습니다.
TheMathemagician

1
@fearofawhackplanet 나는 그것이 145,000 뷰를 가지고 있다는 사실이 그 관련성을 증명한다고 믿습니다. 찬성.
brycejl

답변:


152

1 차원 배열 인 a경우

a.Length

의 요소 수를 제공합니다 a.

경우 b직사각형 다차원 배열 (예를 들면, int[,] b = new int[3, 5];)

b.Rank

차원 수 (2)를 제공하고

b.GetLength(dimensionIndex)

주어진 차원의 길이를 가져옵니다 (차원에 대한 0 기반 인덱싱-따라서 b.GetLength(0)3이고 b.GetLength(1)5 임).

자세한 내용은 System.Array 설명서 를 참조하십시오.

@Lucero가 주석에서 지적했듯이 "들쭉날쭉 한 배열"이라는 개념이 있습니다. 이것은 실제로 (일반적으로 1 차원) 배열의 1 차원 배열에 지나지 않습니다.

예를 들어, 다음을 가질 수 있습니다.

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};

3 개의 멤버는 c모두 길이가 다릅니다. 이 경우, 이전 c.Length의 요소의 개수 나타내는 것 c(3)과 c[0].Length, c[1].Length그리고 c[2].Length3, 2, 7을 각각 일 것이다.


1
완전성을 위해 들쭉날쭉 한 배열의 작동 방식을 나열 할 수도 있습니다 (예 : int[][];-)
Lucero

@Lucerno라고 생각했지만 다른 문제라고 생각했습니다. 배열 내부 의 크기를 알아내는 것입니다 . 들쭉날쭉 한 배열은 실제로는 단일 차원 배열을 포함하는 단일 차원 배열입니다. .
Blair Conrad

3
물론 나는 당신이 옳다는 것을 압니다. 그래서 제가 답을 쓰는 대신 웃는 얼굴로 코멘트를 추가 한 것입니다. 그러나 [,]및 사이의 구분은 [][]모든 .NET 초보자에게 명확하지 않은 것처럼 보이므로 [][]답변 의미에서 다차원 배열이 아니라는 점에 주목할 가치가 있습니다 .
Lucero

2
좋은 대답입니다. 그러나, 당신은 변경할 수 b.GetLength[0] is 3 and b.GetLength[1] is 5있어야한다 b.GetLength(0) and b.GetLength(1).
Droogans

29

Array 에 대한 설명서를 볼 수 있습니다. 이 질문에 대한 답을 찾을 수 있습니다.

이 특별한 경우에는 Length 가 필요할 것입니다 .

int sizeOfArray = array.Length;

그러나 이것은 매우 기본적인 질문이고 당신은 의심 할 여지없이 당신에게 대답을 말하는 것보다 더 많은 것을 가지고 있기 때문에 나는 당신에게 대답을 찾는 방법을 당신에게 말하고 싶습니다.

Visual Studio Intellisense

변수 이름을 입력하고 .키를 누르면 해당 개체에서 사용할 수있는 모든 메서드, 속성, 이벤트 등의 목록이 표시됩니다. 회원을 강조 표시하면 회원이하는 일에 대한 간략한 설명이 제공됩니다.

F1을 누릅니다.

원하는 작업을 수행 할 수있는 메서드 나 속성을 찾았지만 확실하지 않은 경우 커서를 그 위로 이동하고 F1 키를 눌러 도움을받을 수 있습니다. 여기에 훨씬 더 자세한 설명과 관련 정보에 대한 링크가 있습니다.

검색

검색어 size of array in C#는 질문에 대한 답변 등을 알려주는 많은 링크를 제공합니다. 프로그래머가 배워야하는 가장 중요한 기술 중 하나는 정보를 찾는 방법입니다. 특히 이전에 동일한 질문을 한 적이있는 경우 직접 답을 찾는 것이 더 빠릅니다.

튜토리얼 사용

C #을 배우기 시작했다면 튜토리얼을 따라 가기가 더 쉬울 것입니다. MSDN 에서 C # 자습서 를 추천 할 수 있습니다 . 책을 원한다면 Essential C #을 추천 합니다.

스택 오버플로

스스로 답을 찾을 수 없다면 Stack Overflow에 질문을 올려주세요. 하지만 먼저 답을 찾기 위해 노력했음을 보여 주신다면 감사하겠습니다.


3
잘 했어, 마크.
Nayan

1
@Nayan : 감사합니다! OP가 다른 포스터에서 빠르게 답을 얻은 것도 좋지만, 특정 질문에 대한 답을 가르치는 것보다 초보자에게 정보를 찾는 방법을 가르치는 것이 더 중요하다고 생각합니다. OP가이 답변이 유용하다고 생각하고 스스로에 대한 답변을 찾을 수있는 수백 가지 질문을하지 않아도되기를 바랍니다.
Mark Byers

12
이 접근 방식을 취하는 데 시간을 투자 한 +1- "사람에게 물고기를주세요 ..."등
Peter Kelly

내가 똑같이해야한다면 OP를 여기에 귀하의 답변으로 리디렉션 할 것입니다 =) 그리고 예, 나는 당신과 완전히 동의합니다!
Nayan

1
이것은 좋지만 어떻게 든 자동으로 연결되어야한다고 생각합니다. "볼 가치가있는 답변"페이지를 시작할 수 없습니까? 내가 추가 할 한 가지는 질문을 게시하기 전에 스택 오버플로 자체를 확인해야한다는 것입니다. 종종 질문을 올리기 시작한 다음 팝업되는 관련 질문을 봅니다. 대답이 여기에 속하지 않으면 인터넷의 다른 곳에 있는지 확실하지 않습니다.
user420667 2011

16

1 차원 배열의 경우

int[] listItems = new int[] {2,4,8};
int length = listItems.Length;

다차원 배열 용

int length = listItems.Rank;

1 차원의 크기를 얻으려면

int length =  listItems.GetLength(0);

2
Rank속성은 항목 수를 반환하지 않고 차원 수를 반환합니다.
Guffa 2012

1 차원 배열에서 지원하는 속성에 대한 문서는 어디에서 찾을 수 있습니까? (즉, Length, Rank, GetLength)
호치민 트란


8

Length속성 과 함께 .

int[] foo = new int[10];
int n = foo.Length; // n == 10

5

단일 차원 배열의 경우 다음 Length속성 을 사용합니다 .

int size = theArray.Length;

다차원 배열의 경우 Length속성은 배열의 총 항목 수를 반환합니다. 이 GetLength메서드를 사용 하여 차원 중 하나의 크기를 가져올 수 있습니다 .

int size0 = theArray.GetLength(0);

3

대부분의 일반적인 경우 'Length'및 'Count'가 사용됩니다.

정렬:

int[] myArray = new int[size];
int noOfElements = myArray.Length;

유형 목록 배열 :

List <int> myArray = new List<int>();
int noOfElements = myArray.Count;

1

다음과 같이 진행됩니다. 1D :

 type[] name=new type[size]  //or =new type[]{.....elements...}

2D :

 type[][]name=new type[size][] //second brackets are emtpy

이 배열을 사용하면 다음과 같습니다.

 name[i]=new type[size_of_sec.Dim]

또는 행렬과 같은 것을 선언 할 수 있습니다.

type[ , ] name=new type [size1,size2]

0

지금까지 놓친 것은 갑자기 짜증이 나는 것입니다.

배열 내부의 항목 수를 어떻게 알 수 있습니까? 가 .Length동일.Count 목록의?

대답은 다음과 같습니다. 생성 된 X 유형의 배열에 넣은 X 유형 항목의 양은 new X[number] 직접 휴대해야합니다 !

예 : 카운터 사용 : int countItemsInArray = 0그리고 countItemsInArray++배열에 대한 모든 할당에 대해.

(방금으로 생성 된 배열 new X[number]에는 numberX 유형의 항목 (참조)에 대한 모든 공간이 이미 할당되어 있습니다. 예를 들어 (if number= 100 및 변수 이름 = a) 와 같이 첫 번째 할당으로 내부의 모든 위치에 할당 할 수 있습니다 a[50] = new X();.

C #이 생성시 배열 내부의 각 장소의 초기 값을 지정하는지 여부를 모르겠습니다. 그렇지 않은 경우 또는 비교할 수없는 초기 값 (사용자가 배열에 넣은 값일 수 있으므로), 순서대로 시작하지 않으면 이미 할당 한 배열 내부의 위치를 ​​추적해야합니다 0(이 경우 countItemsInArray할당되는 것 보다 작은 모든 위치 ).

귀하의 질문 에서 배열의 크기 (길이 / 항목 수) 에서 / 가 "대안"또는 "나누기"를 의미 하는지 여부에 따라 후자는 여전히 다루어야합니다 ( "항목 수"는 방금 " 항목의 양 "및 기타 항목 .Length의 가치에 해당하는number 위 코드 ) :

C #에는 sizeof연산자 ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof )가 있습니다. 내장 유형 (예 : int)에 사용하는 것이 안전합니다 (변수가 아닌 유형에서만 작동). 따라서 b유형 배열 의 크기 ( int바이트)는입니다 b.Length * sizeof(int).

(위에서 언급 한 것처럼 배열의 모든 공간이 이미 생성시 할당되고 sizeof유형에 대해서만 작업하기 때문에 sizeof(variable)/sizeof(type)추적없이 항목의 양을 산출하거나 같은 코드 가 작동 하지 않습니다 .)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.