Home Full Site
C# 변수

C# 변수는 메서드 안에서 해당 메서드의 로컬변수로 선언되거나, 혹은 클래스 안에서 클래스 내의 전역변수(이를 필드(Field) 라고 부른다)로 선언될 수 있다. 로컬변수는 해당 메서드내에서만 사용되며, 메서드 호출이 끝나면 사용되지 못한다. 반면 필드는 클래스 객체가 살아있는 한 계속 존속하며 또한 다른 메서드들에서 참조할 수 있다 (주: 만약 필드가 static 정적 필드이면 클래스 Type이 처음으로 런타임에 의해 로드될 때 해당 Type object (타입 메타정보를 갖는 객체)에 생성되서 프로그램이 종료 때까지 유지된다).

로컬변수는 기본값을 할당받지 못하기 때문에 반드시 사용 전에 값을 할당해야 하는 반면, 필드는 값을 할당하지 않으면, 기본값이 자동으로 할당된다. 예를 들어, int 타입 필드인 경우 0 이 할당된다.

모든 C# 변수는 Case-Sensitive 즉 대소문자를 구별한다. 즉, var1 과 Var1은 서로 다른 변수이다.




C# 변수 예제

예제

using System;

namespace ConsoleApplication1
{
    class CSVar
    {
        // 필드 (전역 변수)
        int globalVar;
        const int MAX = 1024;

        public void Method1()
        {
            // 로컬변수
            int localVar;

            // 아래 할당이 없으면 에러 발생
            localVar = 100;

            Console.WriteLine(globalVar);
            Console.WriteLine(localVar);
        }
    }

    class Program
    {
        // 모든 프로그램에는 Main()이 있어야
        static void Main(string[] args)
        {
            // 테스트
            CSVar obj = new CSVar();
            obj.Method1();
        }
    }
}

  • 필드 globalVar는 값을 명시적으로 할당하지 않은 경우 기본값 0이 할당된다. 여기서 전역(Global)의 의미는 객체 (혹은 클래스) 내에서의 전역을 의미한다.
  • 지역변수 localVar는 값을 할당하지 않고 사용하게 되면, 컴파일러 에러가 발생한다.


C# 상수

C# 상수는 C# 키워드 const를 사용하여 정의한다. C# 변수와 비슷하게 선언하는데, 다만 앞에 const를 붙여 상수임을 나타낸다. const는 필드 선언부에서 사용되거나 메서드 내에서 사용될 수 있으며, 컴파일시 상수값이 결정된다.

(주: C# const 대신 readonly 키워드를 사용하여 읽기전용 (개념적으로 상수와 비슷한) 필드를 만들 수 있다. readonly는 필드 선언부나 클래스 생성자에서 그 값을 지정할 수 있고, 런타임시 값이 결정된다)


const int MAX_VALUE = 1024;

readonly int Max;
public Class1() {
Max = 1;
}



© csharpstudy.com