C# Study/C# 기초 맨텀 2021. 4. 12. 19:18
대리자 - delegate 키워드를 사용하여 선언 한정자 delegate 반환형식 대리자이름 ( 매개변수 ); - 주의할 점은 대리자는 인스턴스가 아닌 형식(type)이라 인스턴스를 따로 만들어야 한다. delegate int MyDelegate( int a, int b ); // 대리자 MyDelegate callback; // 함수 int Plus(int a, int b) => a + b; void SomeMethod() { callback = new MyDelegate(Plus); Console.WriteLine(callback(3, 4); } 일반화 대리자 - 대리자 또한 일반화 메서드도 참조할 수 있다. delegate int Compare(T a, T b); 대리자 체인 - 대리자는 += 연산..
C# Study/C# 기초 맨텀 2021. 4. 12. 16:24
예외처리가 필요한 경우 - 함수 내에서 예외를 처리하는 경우 이러한 함수가 생길 수 있다. // 피제수가 0이면 음수를 반환하고, 아니면 몫을 반환한다. static int Divide(int divisor, int dividend) { if(dvidend == 0) return -1; else return divisor / dividend; } - try~catch를 사용할 경우 예외의 코드가 분리될 수 있기 때문에 코드를 간결하게 만들어준다. try~catch로 예외 받기 - try 블록에는 예외가 발생하지 않았을 때의 처리 내용이 들어가며, 예외가 발생했을 경우 코드의 실행이 중지되고 catch 절에서 받는다. try { // 실행 코드 } catch( 예외1 ) { // 예외 처리 } catch(..
C# Study/C# 기초 맨텀 2021. 4. 11. 19:56
일반화 메서드 - 데이터 형식을 일반화한 메서드 void CopyArray( T[] source, T[] target ) { for( int i = 0; i array[index]; } 형식 매개변수 제약시키기 - where 절을 통해 형식 매개변수를 제한할 수 있다. class MyList where T : MyClass // T는 MyClass를 상속하여야한다. { // } 제약 설명 where T : struct T는 값 ..
C# Study/C# 기초 맨텀 2021. 4. 11. 17:57
배열 초기화 방법 - C#에서는 3가지 방법으로 배열을 초기화할 수 있다. - {} 블록은 컬렉션 초기자(Collection Initializer)라고 부른다. string[] array1 = new string[3]{ "A", "B", "C" }; string[] array2 = new string[]{ "A", "B", "C" }; // 크기 생략가능 string[] array3 = { "A", "B", "C" }; // 형식도 생략가능 System.Array 클래스 분류 이름 설명 정적 메소드 Sort() 배열을 정렬 BinarySearch() 이진탐색 IndexOf() 특정 데이터의 인덱스 반환 TrueForAll() 모든 요소가 조건에 부합하는지 여부 반환 FindIndex() 조건에 일치하는 ..
C# Study/C# 기초 맨텀 2021. 4. 10. 18:38
Value 튜플 - 여러 필드를 담을 수 있는 구조체. (Tuple과 ValueTuple은 다르다!) - System.ValueTuple 구조체를 기반으로 만들어짐. - 명명되지 않은 튜플과 명명된 튜플끼리는 필드의 수와 형식이 같다면 할당이 가능함. var tuple = (Name: "테스트", Age : 15); // 명명된 튜플 var tuple2 = ("테스트", 15); // 명명되지않은 튜플 var tuple = (Name: "테스트", Age: 15); var (name, age) = tuple; Console.WriteLine(name); var (name2, _) = tuple; // 특정 필드를 무시할 수 있음 Console.WriteLine(name2); Tuple과 ValueTupl..
C# Study/C# 기초 맨텀 2021. 4. 10. 17:59
인터페이스 (interface) - 클래스와 비슷하지만 메서드, 이벤트, 인덱서, 프로퍼티만을 가질 수 있다. - 구현을 가질 수 없다. - 인터페이스는 접근 제한 한정자를 사용할 수 없고 모든 것이 public으로 선언된다. - 인터페이스를 상속하는 인터페이스도 만들 수 있다. - C#에서는 클래스의 다중상속을 허용하지 않지만, 인터페이스의 다중상속은 허용한다. 다중상속은 불가능하지만, 포함(Containment) 기법을 통해 기능을 클래스로 만들어서 필드로 선언하는 방법도 있다. 추상 클래스 (abstract class) - 인터페이스와 달리 구현을 가질 수 있다. - 한정자는 명시하지 않으면 private로 선언된다. ( 일반 클래스와 동일 ) - 추상 메소드를 가질 수 있다. - 추상 클래스를 상..