C#/C# 교과서

[C# 교과서] 50~51. 동적형식, 튜플

서니션 2023. 2. 7. 10:48
728x90
반응형

동적형식

dynamic 키워드

C#에서는 dynamic 키워드를 사용하는 동적 형식을 제공

 

  • 컴파일 타임에 형식이 지정되는 프로그램은 편함. 바로 int, string 형으로 변수를 선언한 후 해당 값을 사용하면 됨
  • 런타임 형식이 지정되는 프로그램이 필요할 수 있음. 이때는 dynamiic 키워드를 사용하여 변수를 선언
  • dynamic 키워드는 데이터 형식 자리에 오지만, dynamic은 데이터 형식이 아님
  • var 키워드와 비슷하나 컴파일할 때 데이터 형식을 결정하는 var와 달리, dynamic 키워드는 런타임할 때 데이터 형식을 결정
  • 모든 데이터 형식을 선언하는 자리에는 dynamic 키워드를 사용 가능
  • 동적 형식은 다른 동적 언어와 통신에 유용
  • 유일한 단점은 비주얼 스튜디오 인텔리센스의 도움을 받을 수 없다는 것

동적 바인딩

런타임할 때 데이터 형식을 결정하는 것을 동적 바인딩이라고 함


튜플

튜플은 하나 이상의 값을 한 번에 하나 이상 전달하거나 제공받을 때 사용하는 데이터 구조

추가 클래스가 아닌 괄호를 사용하여 값을 하나 이상 그룹화

> (int x, int y) GetPoint()
. {
.  return (10,20);
. }
> GetPoint().x
10
> GetPoint().y
20
  • 명시적인 형식을 지정할 필요 없음. 컴파일러 형식을 유추하여 자동으로 형식을 제공
  • 튜플은 원하는 이름의 속성을 만들 수 있음

튜플 리터럴

변수에 괄호를 사용하나 값을 하나 이상 설정하는 것을 튜플 리터럴(tuple literal)이라고 함


튜플 리터럴의 여러 가지 사용법

> // 기본 Item1, Item2 형태
> var fhd = (1920, 1080);
> $"Full HD : {fhd.Item1} * {fhd.Item2}"
"Full HD : 1920 * 1080"
>
> // 이름 지정
> var uhd = (Width : 3840, Height : 2160);
> $"4K UHD : {uhd.Width} *{uhd.Height}"
"4K UHD : 3840 * 2160"
>
> // 이름과 형식 지정
> (ushort Width, ushort Height) hd = (1366, 768);
> $"HD : {hd.Width} * {hd.Height}"
"HD : 1366 * 768"
> $"Type({hd.Width.GetType()}, {hd.Height.GetType()})"
"Type(System.UInt16, System.UInt16)"

 

728x90
반응형