프로퍼티로 객체를 생성하고 초기화

00·2024년 12월 19일

C#

목록 보기
28/149

using System;

/*
BirthdayInfo라는 클래스를 정의하고, 이 클래스의 객체를 생성하여 속성을 초기화하는 방법을 보여줍니다.
특히, 객체 초기화자를 사용하여 객체를 생성하면서 속성 값을 설정하는 방법을 보여줍니다.

*/

namespace ConstructorWithProperty
{

// BirthdayInfo 클래스
// Name, Birthday, Age 세 개의 속성을 가지고 있음
class BirthdayInfo
{

    public string Name // Name은 자동 구현 속성으로, 컴파일러가 자동으로 private 필드를 생성하고,
                       // get/set 접근자를 통해 필드에 접근

                        // 따라서 객체 초기화자에서 Name = "서현"과 같이 속성에 값을 할당하면, 컴파일러가 자동으로 생성한 private 필드에 값이 할당됩니다.
                        // 즉, 콜론(:)을 사용하지 않아도 속성 이름과 값을 구분할 수 있습니다.
    {
        get;
        set;
    }


    public DateTime Birthday // Bitthday는 자동 구현 속성으로, 컴파일러가 자동으로 private 필드를 생성하고,
                             // get/set 접근자를 통해 필드에 접근
    {
        get;
        set;
    }


    public int Age // Age는 읽기 전용 속성으로,  get 접근자만 가지고 있으며,
                   // 현재 날짜와 Birthday 속성의 차이를 계산하여 나이를 반환
    {
        get
        {
            return new DateTime(DateTime.Now.Subtract(Birthday).Ticks).Year;
        }
    }
}


class MainApp
{
    static void Main(string[] args)
    {
        BirthdayInfo birth = new BirthdayInfo() // BirthdayInfo 객체를 생성
                                                // 객체 초기화자를 사용하여 Name 속성과 Birthday 속성을 초기화
        {
            Name = "서현", // 콤마로 구분, 초기화 하고 싶은 프로퍼티만 {} 안(객체 초기화자)에 넣어서 초기화 하면 됨.

            Birthday = new DateTime(1991, 6, 28) // 객체 초기화자는 중괄호 {} 안에 속성 이름과 값을 콜론(:)으로 구분하여 작성
                                                 // 단, Name과 Birthday 속성이 자동 구현 속성이므로 콜론으로 구분안하고
                                                 // 바로 =를 이용해 값을 할당 가능
        };


        // Console.WriteLine을 사용하여 Name, Birthday, Age 속성 값을 출력
        Console.WriteLine("Name : {0}", birth.Name); 
        Console.WriteLine("Birthday : {0}", birth.Birthday.ToShortDateString()); // birth.Birthday: birth 객체의 Birthday 속성 값을 가져옵니다. 이 값은 DateTime 객체임
                                                                                 // ToShortDateString(): DateTime 객체를 간단한 날짜 형식의 문자열로 변환합니다.
                                                                                 // (예: 2023-08-17)
                                                                                 // 즉, birth 객체의 Birthday 속성 값(DateTime 객체)을 간단한 날짜 형식의 문자열로 변환하여 출력
        Console.WriteLine("Age : {0}", birth.Age);
    }
}

}

0개의 댓글