3_c#/C#문법

C# 배열, 컬렉션, 인덱서

Mi:sAng 2024. 11. 20. 17:00

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