함수의 스코프(Scope)
변수나 함수가 어디서부터 어디까지 접근할 수 있는지를 정의하는 범위
전역 스코프(Global Scope)
- 전역 스코프에 있는 변수는 클래스 내의 모든 메서드에 접근 가능
- 클래스의 필드로 선언된 변수가 전역 스코프를 가지게 된다.
- 이런 변수는 클래스의 인스턴스가 존재하는 동안 접근 가능하다.
public class Player
{
// 전역 변수
public int health = 100;
public void TakeDamage(int damage)
{
// 클래스 내의 다른 메서드에서 접근 가능
health -= damage;
}
public void Heal(int amount)
{
// 이 메서든에서도 접근 가능
health += amount;
}
}
해당 예제에서 'health' 변수는 'Player' 클래스의 전역 변수이다.
그래서 'TakeDamage'와 'Heal' 메서드 모두 이 변수에 접근하고 수정할 수 있다.
지역 스코프(Local Scope)
- 지역 스코프에 있는 변수는 선언된 블록(예: 메서드, 루프) 내에서만 접근 가능하다.
- 메서드 내부에서 선언된 변수는 그 메서드가 끝날 때까지만 유효한다.
public void Start()
{
// 지역 변수
int score = 0;
for (int i = 0; i < 10; i++)
{
// 이 블록 내에서는 score에 접근 가능
score += 10;
}
}
// 이 메서드 밖에서는 score에 접근할 수 없다.
해당 예제에서 'score' 변수는 'Start' 메서드 내에서만 유효하다.
'Start' 메서드가 끝나면 'score'변수는 더 이상 접근할 수 없다.
블록 스코프(Block Scope) - C#의 중요 특징
- 변수 선언이 특정 코드 블록 ({}) 내에서만 유효하다.
public void Update()
{
int (true)
{
// 이 if 블록 내에서만 유효
int temporaryValue = 5;
}
// temporaryValue에 접근 불가, 컴파일 에러 발생
}