C#
[C#] 지역 변수, 전역 변수
코북
2023. 3. 28. 11:00
C# 변수는 지역 변수와 전역 변수 두 가지 방법으로 선언될 수 있다.
지역 변수
- 메서드 안에서 선언되고, 해당 메서드 내에서만 사용되며, 메서드 호출이 끝나면 소멸한다. 전역 변수보다 메모리 관리에 유용하다.
- 함수 밖에서는 불러올 수 없다.
- 각기 다른 함수 내에서 같은 이름의 지역 변수를 만들어도 무관하다.
- 기본 값을 할당받지 못하기 때문에 반드시 사용 전에 값을 할당해야 한다.
전역 변수 (Field, 필드)
- 클래스의 객체가 살아있는 한 존속한다.
- 다른 메서드들에서 필드를 참조할 수 있다.
- 만약 필드가 정적 필드(static field)라면 클래스 타입이 처음으로 런타임에 의해 로드될 때 해당 타입 객체에 생성되어 프로그램이 종료될 때까지 유지된다.
- 값을 할당하지 않으면, 해당 타입의 기본 값이 자동으로 할당된다. 예를 들어 int 타입 필드인 경우 기본값 0이 할당된다.
※ 참고 : 클래스 안에서 전역적으로 사용할 수 있는 변수를 멤버 변수라고 한다.
예제
using System;
namespace ConsoleApplication
{
class A
{
// 전역 변수, 할당하지 않으면 기본값이 할당 됨
int number_A;
int number_B = 5;
public void a_method ()
{
// 지역 변수
int number_B;
// 값을 할당하지 않으면 에러 발생
number_B = 3
int sum = number_B + 1;
Console.WriteLine(sum);
}
class Program
{
static void Main(string[] args)
{
A obj = new A();
Console.WriteLine(A.number_B); // 5
A.a_method(); // 4
}
}
}
}
- 전역 변수 선언 후 지역 변수를 선언하게 되면 해당 함수 안에서는 지역 변수가 우선이 되므로 전역 변수는 무시된다.
- 필드 number_A는 값을 명시적으로 할당하지 않았기 때문에 기본값 0이 할당된다.
- 필드 number_A는 전역 변수이면서 멤버 변수이다.