C# 언어 심화 3편 – 익명 타입과 dynamic 활용법

2025. 4. 25. 11:56개발이야기

728x90
반응형

C#에서는 데이터 구조를 유연하고 간단하게 다룰 수 있도록 **익명 타입(Anonymous Types)**과 dynamic 타입을 제공합니다. 이번 글에서는 이 두 가지 개념을 깊이 있게 살펴보고, 실무에서 어떻게 유용하게 활용할 수 있는지 알아봅니다.


1. 익명 타입(Anonymous Types)이란?

선언하지 않고 즉석에서 데이터를 담을 수 있는 가벼운 데이터 구조

 익명 타입의 사용 예시

var person = new { Name = "Alice", Age = 30 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
// 출력: Name: Alice, Age: 30
  • 빠르게 데이터 구조를 정의하고 사용할 수 있음
  • LINQ와 함께 결과 데이터를 가공할 때 유용

2. dynamic 타입이란?

컴파일 시점이 아닌 실행 시점에서 타입을 결정하는 동적 타입

 dynamic 타입의 사용 예시

dynamic value = "Hello, World!";
Console.WriteLine(value); // 출력: Hello, World!

value = 123;
Console.WriteLine(value); // 출력: 123
  • 런타임 시점에 타입 체크
  • JSON 데이터 처리, COM 객체 연동 등에 유리

3. 익명 타입 vs dynamic 타입 비교

항목 익명 타입 dynamic 타입

타입 결정 시점 컴파일 시점 런타임 시점
타입 안정성 높음 낮음 (런타임 오류 가능)
사용 용도 일회성 데이터 구조 유연한 타입 변경, 외부 데이터 처리

4. 실전 예제: JSON 데이터를 dynamic으로 처리하기

using Newtonsoft.Json;

string json = @"{ 'Name': 'Bob', 'Age': 25 }";

dynamic data = JsonConvert.DeserializeObject(json);
Console.WriteLine($"Name: {data.Name}, Age: {data.Age}");
// 출력: Name: Bob, Age: 25

5. 실전 예제: LINQ와 익명 타입 활용하기

var products = new[]
{
    new { Name = "사과", Price = 1500 },
    new { Name = "바나나", Price = 1000 },
    new { Name = "체리", Price = 3000 }
};

var cheapProducts = products
    .Where(p => p.Price < 2000)
    .Select(p => new { p.Name, p.Price });

foreach (var item in cheapProducts)
    Console.WriteLine($"{item.Name}: {item.Price}원");

// 출력:
// 사과: 1500원
// 바나나: 1000원

 요약

  • 익명 타입: 빠르고 간편한 일회성 데이터 구조 생성
  • dynamic 타입: 런타임에서 타입 결정, 유연한 데이터 처리
  • 두 타입 모두 특정 상황에서 매우 강력하고 편리하게 활용 가능

 

728x90
반응형