C #에서 익명 형식을 사용하는 방법

익명 유형은 이름이없는 유형입니다. 익명 유형을 사용하여 단일 단위 내에서 읽기 전용 속성 집합을 캡슐화 할 수 있으며 익명 유형을 미리 정의 할 필요가 없습니다. 이 문서에서는 익명 형식이 무엇인지, 왜 중요한지, C #에서 익명 형식으로 작업 할 수있는 방법에 대해 설명합니다.

이 문서에 제공된 코드 예제를 사용하려면 시스템에 Visual Studio 2019가 설치되어 있어야합니다. 아직 복사본이없는 경우 여기에서 Visual Studio 2019를 다운로드 할 수 있습니다. 

Visual Studio에서 콘솔 애플리케이션 프로젝트 만들기

먼저 Visual Studio에서 .NET Core 콘솔 애플리케이션 프로젝트를 만들어 보겠습니다. Visual Studio 2019가 시스템에 설치되어 있다고 가정하고 아래에 설명 된 단계에 따라 Visual Studio에서 새 .NET Core 콘솔 애플리케이션 프로젝트를 만듭니다.

  1. Visual Studio IDE를 시작합니다.
  2. "새 프로젝트 만들기"를 클릭합니다.
  3. "새 프로젝트 만들기"창의 표시된 템플릿 목록에서 "콘솔 앱 (.NET Core)"을 선택합니다.
  4. 다음을 클릭하십시오.
  5. 다음에 표시된 "새 프로젝트 구성"창에서 새 프로젝트의 이름과 위치를 지정합니다.
  6. 생성을 클릭합니다.

그러면 Visual Studio 2019에서 새로운 .NET Core 콘솔 애플리케이션 프로젝트가 생성됩니다.이 문서의 후속 섹션에서이 프로젝트를 사용하여 C #에서 익명 형식으로 작업하는 방법을 설명합니다.

C #의 익명 형식 이해

기본적으로 익명 유형은 참조 유형이며 var 키워드를 사용하여 정의 할 수 있습니다. 익명 유형에 하나 이상의 속성을 가질 수 있지만 모두 읽기 전용입니다. C # 클래스와 달리 익명 형식은 필드 나 메서드를 가질 수 없으며 속성 만 가질 수 있습니다.

익명 유형이 정의 된 메서드 내에서 익명 유형 또는 해당 속성에 액세스 할 수 있습니다. 즉, 익명 유형의 액세스 가능성은 정의 된 범위로 제한됩니다.

C #에서 익명 형식 사용

이제 몇 가지 코드를 살펴 보겠습니다. 다음 익명 유형을 고려하십시오.

var author = new

{

  FirstName = "Joydip",

  성 = "칸 질랄",

  주소 = "Hyderabad, INDIA"

};

앞의 코드 조각에서 author는 new 키워드를 사용하여 만든 익명 유형의 인스턴스 이름입니다. (익명 형식 자체의 이름은 컴파일러에서만 알 수 있습니다.)이 익명 형식에는 FirstName, LastName 및 Address라는 세 가지 속성이 포함됩니다. 이러한 속성은 모두 문자열 유형입니다. 익명 유형으로 작업 할 때 속성을 초기화하기 전에 속성 유형을 지정할 필요가 없습니다.

다음 코드 조각을 사용하여 위의 익명 유형의 세 가지 속성에 모두 액세스 할 수 있습니다.

Console.WriteLine ( "이름 : {0} {1}", author.FirstName, author.LastName);

Console.WriteLine ( "주소 : {0}", author.Address);

C #에서 중첩 된 익명 형식 사용

익명 유형도 중첩 될 수 있습니다. 즉, 익명 유형을 다른 익명 유형 내부의 속성으로 가질 수 있습니다. 다음은이를 설명하는 예입니다.

var author = new

{

  FirstName = "Joydip",

  성 = "칸 질랄",

  주소 = new {City = "Hyderabad", Country = "INDIA"}

};

아래 제공된 코드 스 니펫에 표시된대로이 중첩 된 익명 유형의 속성에 액세스 할 수 있습니다.

Console.WriteLine ( "이름 : {0} {1}", author.FirstName, author.LastName);

Console.WriteLine ( "주소 : {0}", author.Address.City);

전체 프로그램은 참조 용으로 아래에 제공됩니다.

static void Main (string [] args)

{

  var author = new

  {

     FirstName = "Joydip",

     성 = "칸 질랄",

     주소 = new {City = "Hyderabad", Country = "INDIA"}

  };

  Console.WriteLine ( "이름 : {0} {1}", author.FirstName, author.LastName);

  Console.WriteLine ( "주소 : {0}", author.Address.City);

  Console.Read ();

}

LINQ에서 익명 형식 사용 

LINQ의 Select 절은 결과로 익명 형식을 만들고 반환합니다. 다음 코드 스 니펫은이를 보여줍니다.

Author라는 다음 클래스를 고려하십시오.

공개 클래스 작성자

{

  public int Id {get; 세트; }

  public string FirstName {get; 세트; }

  public string LastName {get; 세트; }

}

다음 코드 조각은 작성자 목록을 만드는 방법을 보여줍니다.

IList 작성자 =

새 목록 ()

{

  new Author () {Id = 1, FirstName = "John", LastName = "Willey"},

  new Author () {Id = 2, FirstName = "Steve", LastName = "Smith"},

  new Author () {Id = 3, FirstName = "Bill", LastName = "Ruffner"},

  new Author () {Id = 4, FirstName = "Joydip", LastName = "Kanjilal"}

};

그리고 다음 코드 조각에서는 LINQ의 Select 절을 익명 형식과 함께 활용하여 쿼리 실행시 결과를 반환하는 방법을 보여줍니다.

var 결과 = 저자에서 새로 선택

{

   Id = a.Id,

   이름 = a.FirstName + "\ t"+ a.LastName

};

이제 아래 코드 조각과 같이 콘솔 창에 작성자 ID와 이름을 표시 할 수 있습니다.

foreach (결과의 var 데이터)

      Console.WriteLine (data.Name);

전체 프로그램은 참조 용으로 아래에 제공됩니다.

공개 클래스 작성자

    {

        public int Id {get; 세트; }

        public string FirstName {get; 세트; }

        public string LastName {get; 세트; }

    }

    수업 프로그램

    {

        static void Main (string [] args)

        {

            IList 작성자 = new List () {

                        new Author () {Id = 1, FirstName = "John",

                                      LastName = "Willey"},

                        new Author () {Id = 2, FirstName = "Steve",

                                      LastName = "Smith"},

                        new Author () {Id = 3, FirstName = "Bill",

                                      LastName = "Ruffner"},

                        new Author () {Id = 4, FirstName = "Joydip",

                                      성 = "칸 질랄"}

                };

            var 결과 = 작성자의 a

                         새로 선택

                         {

                             Id = a.Id,

                             이름 = a.FirstName + "\ t"+ a.LastName

                         };

            foreach (결과의 var 데이터)

                Console.WriteLine (data.Name);

            Console.Read ();

        }

    }

익명 형식을 사용하면 형식을 미리 선언하지 않고도 형식을 만들고 빠르게 인스턴스화 할 수 있습니다. CLR의 관점에서 보면 익명 형식은 또 다른 참조 형식 일뿐입니다. 컴파일러는 내부적으로 각 익명 유형에 이름을 제공합니다.

익명 형식은 Object 클래스에서 파생됩니다. 이것이 익명 유형을 Object 유형의 인스턴스로만 캐스팅 할 수있는 이유입니다. 또한 메서드, 속성, 이벤트, 대리자 등의 반환 형식은 익명 형식이 될 수 없습니다.

C #에서 더 많은 작업을 수행하는 방법 :

  • C #에서 추상 클래스와 인터페이스를 사용하는 경우
  • C #에서 AutoMapper를 사용하는 방법
  • C #에서 람다 식을 사용하는 방법
  • C #에서 Action, Func 및 Predicate 대리자를 사용하는 방법
  • C #에서 Dapper ORM을 사용하는 방법
  • C #에서 간단한 로거를 구현하는 방법
  • C #에서 log4net으로 작업하는 방법
  • C #에서 대리자를 사용하는 방법
  • C #에서 특성을 사용하는 방법
  • C #에서 플라이 웨이트 디자인 패턴을 사용하는 방법
  • C #에서 리포지토리 디자인 패턴을 구현하는 방법
  • C #에서 가상 및 추상 메서드 탐색
  • C #에서 리플렉션을 사용하는 방법
  • C #에서 filesystemwatcher로 작업하는 방법