본문 바로가기
반응형

C#59

[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.
[c#] Boxing 과 Unboxing Boxing이란? 값 형식을 참조 형식으로 변환하는 것이다. 값 형식의 스택에 있는 데이터가 참조형식의 힙으로 복사된다. Boxing할 때는 새로운 개체가 만들어져야 하며, 이 작업은 할당 작업보다 최대 20배의 시간이 소모된다. ex) 값 형식 int가 참조 형식 string 으로 변환 되는 과정에서 Boxing이 발생한다. int a = 10; string str = a; Unboxing이란? 참조 형식을 값 형식으로 변환하는 것이다. 참조 형식의 힙에 있는 데이터가 스택으로 복사된다. Unboxing은 Boxing한 객체에서만 가능한다. Unboxing할 때는 캐스팅 과정에 할당 작업보다 4배의 시간이 걸릴 수 있다. ex) 참조 형식의 string이 값 형식의 int로 변환 되는 과정에서 Unbo.. 2021. 8. 20.
반응형