일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 도커
- C++
- 플러터
- c# 추상 클래스
- 포인터
- Algorithm
- docker
- github
- c언어
- Houdini
- jupyter lab
- C언어 포인터
- Python
- C# delegate
- git
- 깃
- Data Structure
- c# winform
- Unity
- dart 언어
- jupyter
- 유니티
- gitlab
- vim
- Flutter
- 다트 언어
- 구조체
- HTML
- c# 윈폼
- c#
Archives
- Today
- Total
nomad-programmer
[Programming/C#] dynamic 형식 본문
dynamic 형식도 int, string과 같은 하나의 데이터 형식이다. 다만 형식 검사가 컴파일할 때 이루어지는 다른 형식과는 달리 형식 검사가 프로그램 실행 중에 이루어진다는 점이 다르다.
class MyClass
{
public void FuncA() { }
}
class MainApp
{
static void Main(string[] args)
{
MyClass obj = new MyClass();
obj.FuncA();
// FuncB() 메소드는 정의되어 있지 않으므로 컴파일 에러 발생
obj.FuncB();
}
}
위의 코드는 컴파일되지 않는다. MyClass 클래스는 FuncB() 라는 메소드가 선언되어 있지 않기 때문이다.
class MyClass
{
public void FuncA() { }
}
class MainApp
{
static void Main(string[] args)
{
// dynamic 형식으로 선언된 obj는 컴파일러의 형식 검사를 피해간다.
dynamic obj = new MyClass();
obj.FuncA();
obj.FuncB();
}
}
MyClass를 이용해서 obj를 선언하던 코드와는 달리 dynamic 키워드를 이용해서 obj를 선언한 위의 코드는 컴파일러의 방해 없이 실행 파일을 만들어 낼 수 있다. 컴파일러가 dynamic 키워드를 만나면 형식 검사를 실행할 때 검사하도록 미루기 때문이다.
dynamic 키워드는 형식 검사를 컴파일할 때 실행해도 미루겠다는 것뿐이지, 하지 않겠다는 것은 아니다. "강력한 형식 검사"는 dynamic 키워드가 사용된 곳에서도 여전히 유효하다.
'Programming > C#' 카테고리의 다른 글
[Programming/C#] 동적 언어와의 상호 운용성을 위한 dynamic 형식 (1) | 2020.09.27 |
---|---|
[Programming/C#] COM (Component Object Model) (0) | 2020.09.27 |
[Programming/C#] 어트리뷰트 (Attribute) (0) | 2020.09.26 |
[Programming/C#] 리플렉션 (Reflection) (0) | 2020.09.25 |
[Programming/C#] LINQ의 표준 연산자와 쿼리식 문법 (0) | 2020.09.25 |
Comments