성장일기

06/04 스마트팩토리 교육- 본문

프로그래밍언어/C#

06/04 스마트팩토리 교육-

김몽몽 2020. 6. 4. 12:50

º모든 연산자를 오버로딩할 수 있는것은 아니다


○클래스 간의 형변환


환율 고려안한 금전계산 오류  생길 수 있다

<소스>

ºimplicit(암시적, 명시적 형변환 둘 다 허용)

 explicit은 명시적만

implicit operate를 오버로드했으므로 함시적 형변환을 할 수 있고 명시적으로 캐스팅연산자를 쓰는 것도 허용

 

ºexplicit

명시적 형변환이 가능하다

 


○C#의 클래스 확장


1.타입유형 확장


1.1 중첩클래스

public을 붙여야 외부에서 사용할 수 있다

internal-같은 파일 내부에 위치


1.2 추상클래스

->abstarct 예약어가 지정되고 구현 코드가 없는 메서드

부모클래스의 인스턴스를 생성하지 못하게 하면서 특정 메서드에 대해 자식들이 반드시 재정의하도록 하고싶을 떄

º특징

 new를 사용해 인스턴스로 만들 수 없다

 추상 메서드를 가질 수 있다

 (추상메서드는 중괄호가 없이(코드가 없이) 바로 세미콜론으로 끝남)

 ->public abstact void Draw();

 

<소스>

추상클래스.cs
0.00MB


1.3 델리게이트

메소드를 참조하는 변수

반환이 void고 인자가 없는 메서드만 가리킬 수 있다

(시그니처가 같아야 함)


1.메서드의 반환값으로 델리게이트를 사용할 수 있다.

2.메서드의 인자로 델리게이트를ㄹ 전달할 수 있다.

3.클래스의 멤버로 델리게이트를 정의할 수 있다.

===================================

1.메서드의 반환값으로 메서드를 사용할 수 있다.

2.메서드의 인자로 메서드를 전달할 수 있다.

3.클래스의 멤버로 메서드를 정의할 수 있다.

위 예제를 한번의 함수 호출로 사칙연산 메서드가 모두 호출되는 예제

기존의 add값을 유지하고 substract 추가 multiply,divide도 추가(CalcDelegate가 다 들고 있음)

-일종의 배열형태

원래 하나씩 호출해야하는데 인자만 넣으면 폼이 돌아가서 한꺼번에 실행된다

자동화된 foreach문과 비슷

+=연산자, -=연산자도 지원한다 , 목록에서 Multiply 제거해서 곱셈만 뺴고 나옴