프로그램/C# - Study / / 2010. 9. 14. 12:11

7D - readonly, const

반응형


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

namespace Ex12OOP3
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person("", "", "");
            Person p2 = new Person("", "", "");
            Person p3 = new Person("", "", "");

            Console.WriteLine(p1.GetPersonInfo());
            Console.WriteLine(p2.GetPersonInfo());
            Console.WriteLine(p3.GetPersonInfo());

            Console.WriteLine(Person.NextNumber); // 클래스로 접근
        }
    }
}

********************************************* 코드파일 추가1 ************************************************
using System;

namespace Ex12OOP3
{
    class Person
    {
        private static int nextNumber = 1; //필드초기화 (생성자 메서드 호출 직전에 처리)
              // static 해주면 각 객체간 공유를 하게 해준다
        public static int NextNumber
        {
            get { return nextNumber; }
            set
            {
                // number = 1; 오류 : static 영역에서는 객체형 멤버를 접근 불가
                nextNumber = value;
            }
        }
        static Person() { nextNumber = 1; }

        private int number;
        public int Number  // 리펫터링 -> 필드캡슐화
        {
            get { return number; }
            set { number = value; }
        }

        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private string phone;       
        public string Phone
        {
            get { return phone; }
            set { phone = value; }
        }

        private string email;
        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        // public Person() {  } 생성자를 안만들어도 기본으로 이건 생략이 되어 있다
        public Person() //main 생성자
        {
            number = nextNumber;
            nextNumber++;
           
        }
        public Person(string name, string phone, string email)
            :this()
        {
            this.name = name;
            this.phone = phone;
            this.email = email;
        }

        //기능(Method)
        public string GetPersonInfo()
        {           //Console.WriteLine 와 같다
            return string.Format(
                "[{0}][{1}][{2}][{3}]", number, name, phone, email);
        }
    }
}

********************************************* 코드파일 추가2************************************************
using System;

namespace Ex12OOP3
{
    class Constans
    {
        public int dataa = 10;
        public readonly int datab = 10; // readonly는 필드 초기화 선택
        public const int datac = 10; // const는 반드시 필드 초기화 필요

        public Constans()
        {
            dataa = 20;
            datab = 20; // readonly는 생성자에서 값 변경 O
            //datac = 20; // const는 생성자에서 값 변경 X
        }
        public void Method()
        {
            dataa = 30;
            //datab = 30;  // 값 변경 X
            //datac = 30;  // 값 변경 X

        }

        //필드 , 메소드, 프로퍼티, 콘스트럭터, 스타틱, 리드온니, 콘스트


    }
}

반응형

'프로그램 > C# - Study' 카테고리의 다른 글

7D - 다형성, 상속  (0) 2010.09.14
7D - 상속, protected  (0) 2010.09.14
7D - 오버로딩  (0) 2010.09.14
7D - private, pubic 접근 - 추가  (0) 2010.09.14
6D - private, pubic 접근  (0) 2010.09.13
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유