변수

  • 로컬변수
    • 해당 메서드내에서만 사용
    • 메서드 호출이 끝나면 소멸
    • 사용 전 값 할당 필요
      • 할당하지 않고 사용하면 에러(CS0165)
  • 필드
    • 클래스 내의 멤버들이 전역적으로 사용 하는 변수
    • 클래스 객체가 살아있는 한 존속
    • 값을 할당하지 않으면 기본값이 자동으로 할당
      • int 타입인 경우 0
      • 경고(CS0649) 발생
    • 필드가 정적 필드(static field)인 경우 클래스 Type이 처음으로 런타임에 의해 로드될 때 생성되어 프로그램이 종료될 때까지 유지됨
  • 대소문자 구분(case-sensitive)
using System;

namespace MyApp
{
    class MyClass
    {
        // 필드 (클래스 내에서 공통적으로 사용되는 전역 변수)
        int g;
        const int MAX = 1024;

        public void MyMethod()
        {
            int i; // 로컬변수
            i = 1; // 할당 없이 사용하면 에러

            Console.WriteLine(g);
            Console.WriteLine(i);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyClass c = new MyClass();
            c.MyMethod()
        }
    }
}

상수

  • const를 사용해서 정의
  • 상수는 프로그램 중간에 값을 변경할 수 없다
  • 필드 선언부나 메서드 내에서 사용 가능
  • 컴파일시 상수값이 결정됨

readonly

  • 읽기 전용 필드
  • 필드 선언부나 클래스 생성자에서 값을 지정할 수 있다
using System;

namespace MyApp
{
    class MyClass
    {
        const int MAX_VALUE = 1024;
        readonly int Max;
        public MyMethod()
        {
            Max = 1;
        }
    }
}

참고자료