본문 바로가기

C# 문법7

[C#] 인덱서 인덱서 - 인덱스를 이용해서 객체 내의 데이터에 접근하게 해주는 프로퍼티 선언 class 클래스이름 { 한정자 인덱서형식 this[형식 index식별자] { get { // index 를 이용하여 내부 데이터 변환 } set { // index 를 이용하여 내부 데이터 저장 } } } 위 인덱서 문법을 보면, 인덱서는 프로퍼티처럼 식별자를 따로 가지고 있지 않다. 프로퍼티가 이름을 통해 객체 내의 데이터에 접근하게 해준다면, 인덱서는 인덱스를 통해 객체 내의 데이터에 접근하게 해준다. 인덱서의 선언 class MyList { private int[] array; public MyList() { array = new int[3]; } public int this[int index] // 인덱서 { get .. 2019. 11. 3.
[C#] 컬렉션 (Collection) 컬렉션 - 같은 성격을 띠는 데이터의 모음을 담는 자료 구조. Collections ArrayList Queue Stack Hashtable ArrayList ArrayList는 배열과 비슷한 컬렉션이다. 컬렉션의 요소에 접근할 때는 [] 연산자를 이용하고, 특정 위치에 있는 요소에 데이터를 임의로 할당할 수 도 있다. 한편, 배열과는 달리 컬렉션을 생성할 때 용량을 미리 지정할 필요가 없이 필요에 따라 자동으로 그 용량이 늘어나거나 줄어든다. 가장 중요한 메서드는 Add(), RemoveAt(), Insert() 세 가지이다. Add() 이 메소드는 컬렉션의 가장 마지막에 있는 요소 뒤에 새 요소를 추가. RemoveAt() 특정 인덱스에 있는 요소를 제거. Insert() 원하는 위치에 새 요소를 삽.. 2019. 10. 31.
[C#] 무명 형식 무명 형식 - 이름이 없는 형식이다. 무명 형식은 형식의 선언과 동시에 인스턴스를 할당한다. 인스턴스를 만들고 다시는 사용하지 않을 때 요긴하다. 선언 주의점 무명 형식의 프로퍼티에 할당된 값은 변경이 불가능하다. 한번 무명 형식의 인스턴스가 만들어지고 난 다음에는 읽기만 할 수 있다. 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Console; using System.IO; .. 2019. 10. 2.
[C#] 프로퍼티 프로퍼티 - '속성'이라고 의미를 가지고 있는 프로퍼티는 전용 필드의 값을 읽거나 쓸 수 있는 유연한 메커니즘이다. 데이터의 쉽게 접근할 수 있으며, 메서드의 안정성과 유연성 수준을 올려주는데 도움이 된다. 프로퍼티 더 알아보기 클래스를 작성하다 보면 필드를 public과 private 중에 무엇으로 선언할지 고민하는 경우가 있다. 은닉성을 지키자니 번거롭고, 모든 public으로 선언하자니 은닉성이 신경 쓰이는 상황에 놓인다. 하지만 프로퍼티를 이용한다면 은닉성과 편의성, 둘 다 잡을 수 있다. 하지만 필드와 달리 프로퍼티는 변수로 분류되지 않기 때문에 ref 또는 out 매개변수로 전달할 수 없다. 선언 프로퍼티 선언 문법에서 get과 set을 일컬어 '접근자'라고 한다. get 접근자는 필드로부터 .. 2019. 9. 28.
[C#] 인터페이스 (Interface) 인터페이스 - 인터페이스는 사용자 정의 자료형이며 메서드, 이벤트, 인덱서, 프로퍼티만을 가질 있지만 직접 구현하지 않고 단지 정의만을 갖는다. 그래서 인터페이스는 추상 멤버로만 구성된 추상 클래스와 개념적으로 유사하며, 클래스는 접근 제한 한정자로 수식하지 않으면 기본적으로 private로 선언되지만, 인터페이스는 접근 제한 한정자를 사용할 수 없고 모든 것이 public으로 선언된다. 또한 인스턴스도 만들 수 없으며, 클래스가 인터페이스를 가지는 경우 해당 인터페이스의 모든 멤버에 대한 구현을 제공해야 한다. 인터페이스 정의 인터페이스는 C# 키워드 interface를 사용하여 정의한다. 인터페이스 정의 시에는 내부 멤버들에 대해 public과 같은 접근 제한자를 사용하지 않는다. 인터페이스 구현 C.. 2019. 5. 18.
[C#] 구조체 구조체 - 구조체는 데이터를 담기 위한 자료 구조이다. 클래스와 상당 부분 비슷한 데이터 형식인데, 간단한 데이터를 구조화해서 다룰 경우에는 클래스보다 구조체가 좀 더 적합하다. 또한 구조체는 클래스와 마찬가지로 메서드, 프로퍼티 등 거의 비슷한 구조를 가지고 있지만 상속은 할 수 없으며 값 형식이고 인터페이스는 구현 가능하다. 선언 클래스 VS 구조체 특징 클래스 구조체 키워드 class struct 형식 참조 형식 값 형식 복사 얕은 복사 깊은 복사 인스턴스 생성 new 연산자와 생성자 필요 선언만으로도 생성 생성자 매개 변수 없는 생성자 선언 가능 매개 변수 없는 생성자 선언 불가능 상속 가능 모든 구조체는 System.Object 형식을 상속하는 System.ValueType으로부터 직접 상속 받.. 2019. 5. 18.