1. 배열의 초기화 방법
-기본
string[] arr= new string[3] {"a","b","c"};
-요소 개수 생략
string[] arr= new string[] {"a","b","c"};
-new 연산자, 형식, 요소개수 생략
string[] arr= {"a","b","c"};
2. System. Array 클래스
-모든 배열의 기반 클래스이며, 배열 그 자체를 나타낸다.
-배열을 보다 편리하게 다룰 수 있게 도와주는 유틸리티 메소드 제공
-정렬, 탐색, 크기 조정등의 기능 제공
3. 다차원 배열 - 2차원 배열
-배열의 세 가지 초기화 방법
//행2 열3
int [,] arr = new int [2,3] {{1,2,3},{4,5,6}}
int [,] arr = new int [,] {{1,2,3},{4,5,6}}
int [,] arr = {{1,2,3},{4,5,6}}
4.가변 배열(Jagged Array)
-배열을 요소로 갖는 배열
-요소로 입력되는 배열의 차원과 길이는 각각 달라도 된다.
- 형식
데이터형식[][] 배열이름 = new 데이터형식[가변배열의 용량][];
- 예시
int [][] jagged = new int[3][];
jagged[0] = new int[5] {1,2,3,4,5};
jagged[1] = new int[] {11,22,33};
jagged[2] = new int[] {123,1233};
int [][] jagged2 = new int[2][]{ new int[]{11,22}, new int[4] {4,5,6,7} };
5. 컬렉션
-같은 성격을 띄는 데이터의 모음을 다루는 자료구조
-배열도 .NET이 제공하는 컬렉션 자료구조 중 하나이다.
-ArrayList, Queue, Stack, Hashtable 등이 있다.
[ArrayList]
-인덱스를 이용하여 요소에 접근한다.
-동적으로 크기가 증가한다.
- Add(), RemoveAt(), Insert() 등의 메소드 제공
ArrayList list = new ArrayList();
list.Add(11);
list.Add(22);
list.Add(33);
list.RemoveAt(1);//인덱스 1인 22을 삭제
list.Insert(25,1);// 25를 1번 인덱스에 삽입, 11과 33 사이에 25삽입
list[0]=10;
Console.WriteLine(list[0]); // 10출력
[Queue]
-선입선출 구조의 자료구조
-데이터를 입력하는 Enqueue(), 출력하는 Dequeue() 메소드 제공
Queue que = new Queue();
que.Enqueue(1);
que.Enqueue(2);
que.Enqueue(3);
que.Enqueue(4);
que.Enqueue(5);
int a = que.Dequeue(); //a는 1이다.
[Stack]
-선입후출 구조의 자료구조
-데이터를 입력하는 Push(), 출력하는 Pop() 메소드 제공
Stack stack = new Stack();
stack.Push(1);//최상위 데이터 1
stack.Push(2);//최상위 데이터 2
stack.Push(3);//최상위 데이터 3
int a= stack.Pop(); // a는 3, 최상위 데이터 2
[Hashtable]
-키와 값으로 이루어진 데이터를 다룰 때 사용한다.
-키를 해싱해서 테이블 내의 주소를 계산한다.
-탐색속도가 빠르다.
*해싱 : 데이터를 해시 함수를 사용하여 고정 크기의 값인 해시 코드(또는 해시 값)로 매핑하는 과정
Hashtable ht = new Hashtable();
ht["a"]="AA";
ht["b"]="BB";
ht["c"]="CC";
Console.WriteLine(ht["a"]);// AA 출력
Console.WriteLine(ht["b"]);// BB 출력
Console.WriteLine(ht["c"]);// CC 출력
6. 인덱서
-인덱스를 이용해서 객체 내의 데이터에 접근하게 해주는 프로퍼티
- "프로퍼티" 이다.
*선언 방법
class 클래스이름
{ 한정자 인덱서형식 this[형식 index]{
get{
//index를 이용하여 내부 데이터 반환
}
set{
//index를 이용하여 내부 데이터에 저장
}
}
}
*예시
class MyList{
private int[] array;
public MyList(){
array=new int[3];
}
public int this[int index]{ // 인덱서라는 프로퍼티
get{return array[index];}
set{array[index]=value;}
}
}
class Program{
string Main(string[] Args){
MyList list = new MyList();
list[0]=0; // set 메소드 접근
list[1]=1; // set 메소드 접근
list[2]=2; // set 메소드 접근
Console.WriteLine(list[1]); // get메소드 접근
}
}
'3_c# > C#문법' 카테고리의 다른 글
C# Delegate: 대리자 (1) | 2024.11.20 |
---|---|
C# 일반화 프로그래밍 (0) | 2024.11.20 |
C# 프로퍼티 (1) | 2024.11.20 |
C# 메소드 오버로딩 / 오버라이딩 (0) | 2024.10.02 |
C# TXT파일 접근 - StreamReader, StreamWriter (0) | 2023.07.18 |