Unity3d C# toolba 사용해보기

C#, Array 배열을 알아보자...




C#, 배열을 알아보자...

이번시간에 알아볼 것은 배열입니다. 모든 프로그램언어에서 기본이죠.. 데이터를 다루는 것을 많이 해보셨다면 이것 없이는 정말 불편했을것입니다.

각기 언어들마다  표현하는 문법들이 다르기 때문에 여러 언어를 접해보셨다면 햇갈리실 수도 있겠네요.. 저도 줄곧 델파이만 사용해오다가 C#에 입문해서 이것저것 해보다보니 햇갈리고.. 델파이 문법까지도 햇갈리기 시작하고 있습니다. ㅜㅜ

기본 표현 문법표현을 알아보겠습니다.




C# array





new연산자를 이용하여 int[] 타입의 객체에  사이즈가 10인 배열을 할당해주는것이네요.. 객체지향에 눈이 슬슬익어가네요.. 객체지향언어에서는 모든것을 객체로 표현할 수 있다죠..^^;

10개의 공간을 갖는 배열을 만들지만.. 다들 잘 아시겠지만.. 인덱스번호는 0번부터~9번까지 10개죠..


C#에서는 배열을 좀 편하게 다룰 수 있는 foreach문이 있습니다.  물론 for문이 나쁘다는것은 아니지만..   foreach문에는 해당하는 사이즈만큼 이라는 문구가 생략이 되어있어.. 타이핑을 좀 덜치고 프로그래밍을할 수 있어 정말 편한 것같습니다.



int sum = 0;
foreach( int ary in array)
    sum += ary;

이것을 초기화하는 방법을 알아보겠습니다.


C# array2



셋다 같은 표현입니다. 세번째 방법은 정말 간단해서 좋습니다^^; new생성자까지 생략이 가능합니다..



C# array3




예제야.. 그냥 일반 변수를 모와놓은 것이기 때문에 큰 의미는 없을 것같고요.. 도움이되는 메소드를 알아보는게 좋겠죠.. 가령 이런거 있잖아요.. 정렬을 한다던가.. Array안의 인덱스를 안다던가 같은거요..




Sort() : 정렬을 합니다.  (메소드)
IndexOf() : 찾으려는 데이터의 인덱스번호를 알아낸다..  (메소드)
Clear() : 초기화한다.  (메소드)
GetLength() : 지정한 차원의 길이를 알아낸다. (인스턴스 메소드)
Length : 길이를 알아낸다.  (프로퍼티)
Rank : 차원을 알아낸다. 1차원 2차원배열.. (프로퍼티)
저는 델파이를 사용할때는.. 꼭 이것이 아니더라도.. IndexOf 로 되어있는 프로퍼티를  많이 사용했습니다. Array이든 리스트든.. 콤보박스든 안에들어있는 내용의 인덱스값을 알아내서 처리하는 일이 종종있어서요.. 프로그래머의 스타일에따라 개발하려는 프로젝트의 성향에 따라서 달라지긴하겠지만요..


그다음 이어지는 것은 2차원~ 다차원 배열입니다.

저는 델파이에서 그리드를 2차원대신에 거의 사용했었는데요 바로 리스트로 출력해서 보여주는 류의 프로그램들이 거의 대부분이어서 입니다. 근데 스트링그리드에 셀(Cell)의 좌표값이 2차원의 표기와 반대여서 항상 할때마다 햇갈립니다.  

2차원 배열의 표기가 아래와같죠..
[0,0] [0,1] [0,2]
[1,0] [1,1] [1,2]

하지만 그리드의 셀표기는.. 이렇습니다.(열,행) 이래서..^^
[0,0] [1,0] [2,0]
[0,1] [1,1] [2,1]

2차원 Array 이라하더라도 크게 어렵진 않습니다.

C# array4


세번째 방법은 간단해보이지만.. 글쎄요.. 눈에 잘 안들어옵니다 ㅜㅜ 오히려 첫번재 방법이 좋아보입니다. 배열이 길어지면 가독성이 떨어져서 눈에 잘 안들어오네요..


이런 형식으로 한다면.. 3차원 4차원 으로 만들 수 있겠습니다.  그리 어렵지 않겠네요..하지만 4차원이상이면.. 좀 안쓰고싶습니다.  내용이 길어서.. 다음시간에는 가변배열부터 알아보도록 하겠습니다.









댓글