제로의영역

9.4 프로퍼티와 생성자 본문

C#

9.4 프로퍼티와 생성자

아이큐제로 2019. 7. 3. 18:22

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

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

 

1. 정의: 객체를 생성할 때 각 필드를 초기화하는 방법(초기화: 변수에 최초의 데이터를 할당하는 것. 초기화 되지 않은 변수를 사용하려 들면 컴파일러가 에러 메시지를 내며 실행파일을 만들어주지 않음.)

 

2. 용도: 어떤 필드를 생성자 안에서 초기화할지 고민할 필요가 없음

 

3. 사용법: 

 (1) 객체를 생성

 (2) 생성한 객체의 클래스에 '{ }' 표시

 (3) ' { } '안에 초기화할 프로퍼티를 '프로퍼티 = 초기화할 값' 의 형태로 생성

 예)

클래스이름 + 인스턴스 = new + 클래스이름( )

    {

        프로퍼티1 = 값,

        프로퍼티2 = 값,

        프로퍼티3 = 값

    };

  (3) 객체를 생성할 때 <프로퍼티=값> 목록에 객체의 모든 프로퍼티가 올 필요는 없음.

  (4) 프로퍼티=값 뒤에 ' ; '가 아닌 ' , '를 붙여줌

  (5) 마지막 프로퍼티 뒤에는 아무 표시 없음

  (6) } 뒤에 ' ; ' 을 붙여줌.

 

예제)

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

namespace ex8._7
{
    class BirthdayInfo
    {
        public string Name
        {
            get; set;       //자동구현 프로퍼티
        }

        public DateTime Birthday
        {
            get; set;
        }
        public int Age
        {
            get
            {
                return new DateTime(DateTime.Now.Subtract(Birthday).Ticks).Year;
            }
        }
    }
    class MainProgram
    {
        static void Main(string[] args)
        {
            BirthdayInfo birth = new BirthdayInfo()
            {
                Name = "서현",        //필드 초기화
                Birthday = new DateTime(1991, 6, 28)        //필드 초기화
            };

            Console.WriteLine($"Name:{birth.Name}");        //서현 출력
            Console.WriteLine($"Birthday:{birth.Birthday.ToShortDateString()}");    //1991.6.28 출력
            Console.WriteLine($"Age:{birth.Age}");          //오늘을 기준으로 계산된 나이 출력
        }
    }
}

출력결과

Name:서현
Birthday:1991-06-28
Age:29