제로의영역

9.5 무명 형식(Anonymous Type) 본문

C#

9.5 무명 형식(Anonymous Type)

아이큐제로 2019. 7. 3. 19:06

* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.

* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.

 

1. 정의: 이름이 없는 형식

 - C#에는 여러가지 형식이 있음. int, double, string, FileStream, MyClass 등

 - 형식 이름의 필요성: 형식 이름을 이용해서 인스턴스를 만듬 ( int a; 또는 double b; 등 )

 

2. 용도: 인스턴스를 만들고 다시 사용하지 않을 때 사용

 

3. 사용법

 var + 인스턴스명 = new + { 임의의 프로퍼티 이름을 적고 값을 할당 }

 

 예) var myInstance = new { Name="박상현", Age="17" };

 * var: 컴파일러 자동으로 해당 변수의 형식을 지정할 수 있도록 하는 키워드, 지역변수로만 사용가능

 * myInstance: 인스턴스명

 * new: new 키워드

 * Name: 프로퍼티 이름

 * "박상현": 할당 값

 

4. 특징

 (1) 무명 형식의 프로퍼티에 할당된 값은 변경 불가

 (2) 인스턴스 생성 뒤에는 읽기만 가능

 (3) LINQ와 함께 사용하면 요긴

 

예제)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ex8._8
{
    class MainProgram
    {
        static void Main(string[] args)
        {
            var a = new { Name = "박상현", Age = 123 };    //무명 형식: var + 객체 = new + {}
            Console.WriteLine($"Name:{a.Name},Age:{a.Age}");

            var b = new { Subject = "수학", Scores = new int[] { 90, 80, 70, 60 } }; 
        //무명 형식: var + 객체 = new + {}
            Console.Write($"Subject:{b.Subject},Score: ");
            foreach (var score in b.Scores) //foreach 반복문: foreach(데이터형식 변수명 in 배열)
                Console.Write($"{score} ");

            Console.WriteLine();
        }
    }
}

출력결과

Name:박상현,Age:123
Subject:수학,Score: 90 80 70 60