Unity/C#

함수의 스코프(Scope)

sonsazang 2024. 8. 30. 10:52

함수의 스코프(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에 접근 불가, 컴파일 에러 발생
}