728x90
전역 변수와 지역 변수의 차이
전역 변수
- 클래스 내부 어디서든 불러오고 수정 가능.
- 전역 변수는 클래스의 멤버 변수로 선언됩니다.
- 메모리에 항상 존재하며, 함수 호출 여부와 관계없이 유지됩니다.
int a = 1; // 전역 변수 (멤버 변수)
지역 변수
- 함수 내부에서 선언되고, 해당 함수 내에서만 유효.
- 함수가 호출되면 생성되고, 함수 종료 시 파기.
- 지역 변수는 메모리 최적화에 기여할 수 있음.
void MyFunction()
{
int a = 5; // 지역 변수
a = 6; // 함수 내에서만 유효
}
메모리 최적화와 지역변수
- 지역 변수는 필요할 때만 메모리를 사용하므로 메모리 사용량을 줄일 수 있음.
- 함수 호출 시 생성되고, 함수 종료 시 파괴되어 일시적으로만 메모리에 존재.
static 변수
- 공유 자원으로 사용되는 변수.
- 특정 클래스의 모든 인스턴스가 하나의 값을 공유.
- 클래스가 초기화되지 않아도 직접 접근 가능.
- 언제 어디서 접근하더라도 항상 동일한 값을 보장.
static 변수와 일반 변수 비교
public class Test
{
public int b; // 일반 변수 (인스턴스별로 별도 저장)
public static int e; // 정적 변수 (모든 인스턴스가 공유)
}
internal class Program
{
static void Main(string[] args)
{
Test t1 = new Test();
Test t2 = new Test();
t1.b = 10; // t1의 b 값만 수정
t2.b = 20; // t2의 b 값만 수정
Test.e = 30; // static 변수 e는 모든 인스턴스가 공유
Console.WriteLine($"t1.b: {t1.b}, t2.b: {t2.b}, Test.e: {Test.e}");
}
}
출력 결과
t1.b: 10, t2.b: 20, Test.e: 30
- 전역 변수는 프로그램의 모든 영역에서 접근 가능하지만, 과도한 사용은 관리 및 디버깅을 어렵게 만듦.
- 지역 변수는 필요할 때만 메모리를 사용하며 메모리 최적화에 유리.
- static 변수는 공유 자원이 필요할 때 적합하며, 언제 어디서든 동일한 값이 유지됨.
728x90
'VisualStudio > C#' 카테고리의 다른 글
[C#] 델리게이트(delegate)와 이벤트 (event) (0) | 2022.08.10 |
---|---|
[C#][방법,개념] Nullable Type (0) | 2022.08.10 |
[C#] 구조체와 클래스 차이 (0) | 2022.08.10 |
[C#] static 변수, 클래스, 메소드 (0) | 2022.08.10 |
[C#] 값 형식(Value Types)과 참조 형식(Reference Types) (0) | 2022.08.10 |