반응형 C#52 [Effective C#] Item1 ~ Item5 [Item1] 지역변수를 선언할 때는 var를 사용하는 것이 낫다. C# 언어가 익명 타입을 지원한다. 개발자가 코드를 읽을때 쉽게 짐작할 수 없다면 명시적 타입을 기술하는것이 낫다. [Item2] Const 보다는 readonly가 좋다. 컴파일 타임 상수(Const)보다는 런타임 상수(readonly)를 사용하라 컴파일 타임 상수는 성능이 매우 중요하고 상수의 값이 절대 바뀌지 않을때만 사용 더보기 컴파일타임과 런타임 - 컴파일 타임 : 작성된 코드를 컴파일 과정을 통해 실행 가능한 프로그램으로 편집하는 과정 - 런타임 : 컴파일 과정을 마친 프로그램을 동작 시키는 과정 런타임 상수는 메서드 내에서 선언할 수 없다.(컴파일은 가능) 컴파일 타임 상수는 내장된숫자형, enum, 문자열, null 만 가.. 2022. 7. 8. [c#] delegate 와 Event delegate[델리게이트] 선언 : delegate 반환형 이름(매개변수...); 메소드의 참조(ex.매개변수)를 포함 하여 인스턴스화 하여 작동 반환 형과 매개변수가 모두 같아야함 Class A { delegate int TDelegate(int a, int b);//델리게이트 선언 int Plus(int a, int b) { return a + b; } int Minus(int a, int b) { return a - b; } void Main() { TDelegate td1 = Plus; TDelegate td2 = delegate(int a, int b) { return a / b; }; Console.WriteLine(tb1(5,10));//15출력 Console.WriteLine(tb2(10.. 2022. 6. 30. [c#] 추상클래스와 추상 메서드(abstract) abstract 란? 클래스, 메서드, 프로퍼티, 인덱서, 이벤트와 함께 사용할 수 있다. abstract가 사용되면 파생클래스에서 반드시 구현되어야 한다. 추상 클래스 추상 클래스는 인스턴스화 될 수 없다.(객체를 생성할 수 없음) 변수와 메서드의 선언은 일반 클래스와 동일하게 할 수 있다. 상속을 제한하는 sealed와는 같이 사용할 수 없다. 추상 메서드 추상메서드 선언은 추상 클래스에서만 가능하다. 기본적인 동작은 가상함수와 동일하지만 파생 클래스에서 추상메소드는 반드시 구현해야한다. 추상 메서드는 구현부가 존재하지 않는다.(파생 클래스에서만 구현 가능) 파생클래스에서 override 키워드를 통해 재정의 한다. private, static, virtual 키워드와는 사용 불가능 하다. 예시 pu.. 2021. 8. 20. [c#] 가상(virtual)함수와 오버라이딩(override) 가상(Virtual) 함수란? 부모 클래스에서 virtual 키워드를 사용하여 함수를 만들면 자식 클래스에서 해당하는 함수를 재정의 할 수 있도록 허락한다는 의미이다. 자식 클래스에서 override 또는 new 키워드가 사용 가능하다. override는 재정의 new는 새로운 함수이다.(아무런 키워드를 사용하지 않을 시 new와 동일) 자식클래스의 함수에서 base 키워드를 사용하여 부모 클래스의 함수를 호출 할 수 있다. 추상(abstract)과는 달리 자식에서의 구현은 선택이다. static, abstract, private, override 키워드와는 함께 사용할 수 없다. 예시 public class Animal { public virtual void walk() { Console.WriteLi.. 2021. 8. 20. 이전 1 ··· 9 10 11 12 13 다음 반응형