Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 7.0 분해자(Deconstructor)란 무엇이고 어떻게 사용할까?

C# 7.0에서 도입된 분해자(Deconstructor)는 객체의 속성 값을 여러 개의 변수로 한 번에 꺼내어 할당할 수 있게 해주는 기능입니다. 이는 함수형 프로그래밍에서 가져온 새로운 튜플(tuple) 문법의 일부로, 기존의 Tuple<> 클래스와는 전혀 관련이 없습니다.

분해자의 주요 특징

분해자는 Deconstruct라는 키워드를 사용한 메서드로 정의하며, 다음과 같은 특징을 가집니다.

  • 메서드 이름은 반드시 Deconstruct여야 하며, 모든 매개변수는 out 한정자를 사용해야 합니다.
  • 같은 프로그램 내에서 out 매개변수의 개수가 동일한 여러 분해자 메서드를 정의할 수 있습니다.
  • 매개변수의 개수와 타입이 같더라도 순서가 다르면 오버로드가 가능합니다.

예제 코드

아래 예제는 Employee 클래스에 분해자를 정의하고, 이를 활용해 객체의 속성을 세 개의 변수로 분해하는 방법을 보여줍니다.

public class Employee
{
    public Employee(string employeename, string firstName, string lastName)
    {
        Employeename = employeename;
        FirstName = firstName;
        LastName = lastName;
    }

    public string Employeename { get; }
    public string FirstName { get; }
    public string LastName { get; }

    public void Deconstruct(out string employeename, out string firstName, out string lastName)
    {
        employeename = Employeename;
        firstName = FirstName;
        lastName = LastName;
    }
}

class Program
{
    public static void Main()
    {
        Employee employee = new Employee("emp", "fname", "lname");

        // 분해자를 사용하여 객체를 여러 변수로 분해
        (string EName, string Fname, string Lname) = employee;

        System.Console.WriteLine(EName);
        System.Console.WriteLine(Fname);
        System.Console.WriteLine(Lname);

        Console.ReadLine();
    }
}

실행 결과

emp
fname
lname

정리

분해자는 (string EName, string Fname, string Lname) = employee;와 같은 간결한 구문으로 객체의 상태를 추출할 수 있게 해줍니다. 이를 통해 코드의 가독성이 크게 향상되며, C# 7.0의 튜플 및 패턴 매칭 기능과 함께 활용하면 더욱 효과적입니다. 데이터 전달이나 값 추출이 빈번한 코드에서 분해자를 적극적으로 활용해 보시기 바랍니다.