24. yield 키워드
·
💻 Programming Language/C#
Enumerator(Iterator) : 집합적인 데이터셋으로부터 데이터를 하나씩 호출자에게 보내주게 하는 기능 => 반복자 yield 키워드는 호출자에게 컬렉션 데이터를 하나씩 리턴할 때 사용하는 키워드 yield 사용방식 yield return : 컬렉션 데이터를 하나씩 리턴하는데 사용 yield break : 리턴을 중지하고 Iteration 루프를 빠져나올때 사용 IEnumerator == 데이터를 리턴(Getter)하는 열거자 public interface IEnumerator { object Current { get; } bool MoveNext(); void Reset(); } Current 읽기 전용 프로퍼티로 현재 위치의 데이터를 object 타입으로 리턴한다. object는 System..
23. 컬렉션 초기화, 인덱서
·
💻 Programming Language/C#
ArrayList, Stack, Queue using System.Collections; using static System.Console; //이와 같이 using static System.Console; 을 선언하면 본문에서 Console을 제외하고 // WriteLine()만으로 출력문을 작성할 수 있다. namespace CollectionInitialEx { class Program { static void Main(string[] args) { //컬렉션 초기자를 이용한 초기화 방법 => Stack, Queue에서는 사용할 수 없다. //Stack이나 Queue는 Add메소드를 사용할 수 없기때문 //컬렉션 초기자는 IEnumerable이라는 인터페이스를 상속받아 Add()메소드를 구현하고 있..
21. ArrayList 사용하기
·
💻 Programming Language/C#
Collection(컬렉션) : 간단히 말하면, 데이터 모음을 담는 자료구조 배열이나, 스택, 큐 등을 컬렉션이라는 이름으로 제공 배열은 System.Array 타입이다.(=System.Array클래스를 상속받는다.) => System.Array는 ICollection 인터페이스를 상속 => 따라서 배열도 컬렉션(collection)의 일부이다. .Net 프레임워크에서 사용하는 컬렉션은 ICollection 인터페이스를 상속받는다. ArrayList, Queue, Stack, Hashtable ArrayList ArrayList는 배열과 비슷한 컬렉션 배열처럼 []인덱스로 요소의 접근이 가능하고, 특정 요소를 바로 읽고 쓸 수 있다.하지만, 배열을 선언할 때는 배열 크기를 지정하는 반면, ArrayLis..
19. 인터페이스에서 자동 프로퍼티 사용법
·
💻 Programming Language/C#
namespace InterfacePropertyEx { // 인터페이스 프로퍼티 interface IKeyValue { // 인터페이스에서 자동 프로퍼티는 C# 컴파일러가 자동으로 구현해주지 않는다. // 따라서, 해당 인터페이스를 상속받는 클래스에서 구현해주어야 한다. string Key { get; set; } string Value { get; set; } } class KeyValue : IKeyValue { public string Key { get; set; } public string Value { get; set; } // 이렇게 상속받는 클래스에서 자동프로퍼티를 이용해서 구현할 수 있다. // IKeyValue의 인터페이스를 구현해주고 있음(즉, 컴파일러가 자동으로 프로퍼티를 구현해줌)..
18. C# 7.0에서 자동 프로퍼티 사용법
·
💻 Programming Language/C#
자동 프로퍼티 기능은 C# 3.0에서 도입된 기능 기존 프로퍼티 사용 코드 public string Name { get { return name; } set { name = value; } } public DateTime EntryDate { get { return entryDate; } set { entryDate = value; } } C# 3.0 이후 자동 프로퍼티 사용 코드 public string Name { get; set; } public DateTime EntryDate { get; set; } C# 7.0 부터는 자동 프로퍼티에 초기값이 필요할 때 생성자에 초기화 코드를 작성해야하는 불편함을 해소할 수 있도록 초기값을 바로 설정할 수 있다. 아래 코드를 통해 확인해보자 기존 C# 3.0에..
16. 추상클래스(Abstract Class) 이해
·
💻 Programming Language/C#
namespace AbstractClassEx { abstract class MyAbstractClass { protected void protectedMethod() { Console.WriteLine("추상클래스의 protected method"); } public void publicMethod() { Console.WriteLine("추상클래스의 public method"); } public abstract void abstractMethod(); // 인터페이스에서는 추상메소드가 기본적으로 public이기 때문에 반환타입만 사용했지만 // 추상클래스에서는 추상메소드에 제한자 및 abstract 키워드를 사용해줘야 한다. } class Child : MyAbstractClass { public o..
15. 인터페이스(Interface) 이해
·
💻 Programming Language/C#
namespace InterfaceEx { interface IMyInterfaceA { void output(); } interface IMyInterfaceB { void output(); } class MyClass : IMyInterfaceA, IMyInterfaceB // 다중 상속 { static void Main(string[] args) { MyClass myClass = new MyClass(); IMyInterfaceA ia = new MyClass(); ia.output(); IMyInterfaceB ib = new MyClass(); ib.output(); } void IMyInterfaceA.output() // 다중상속을 통해 가져온 클래스들의 메소드명이 같은경우에는 `클래스.메..