본문 바로가기
프로그래머/코딩(C#)개념정리

C#_클래스_스코프

by FourthWay 2023. 3. 3.
728x90
반응형

스코프란?

변수의 유효 범위를 스코프(scope)라고 한다.

 

지역변수

메소드 안에 선언한 변수를 지역 변수 라고 한다. 지역 변수의 유효 범위는 변수를 선언한 블록 안과 해당 블록 안쪽에 있는 블록으로 한정된다.

 

static void Main()

{
  int n = 2;                               // n의 스코프

  ...

  int x = 1;                              // x의 스코프

 

  if (n >0)

  {

  int y = 2;                                // y의 스코프

  Console.WriteLine(x + ", "+y);

  }

}

 

변수 이름의 중복

선언된 블록 안 또는 안쪽에 있는 블록 안에서 같은 이름의 변수를 선언할 수 없습니다.

 

static void Main()

{

  int y = 1;                      //y의 스코프

  if(y>0)

  {

  int y = 2;                      <--- y의 선언이 중복되었으므로 오류이다.

  Console.WriteLine(x + ", "+ y);

  }

}

 

 

필드의 유효 범위

필드의 유효 범위는 필드를 정의한 블록 안과 해당 블록의 안쪽에 있는 블록으로 한정된다.

class Scope

{
  int zoom = 1;                    //zoom의 스코프

  void printzoom()

  {

   ...

  }

}

 

필드와 지역 변수의 구별

필드와 지역 변수는 같은 이름으로 지정할 수 있다. 메소드 안에서 지역 변수와 같은 이름의 필드를 참조할 경우에는 앞에

this를 붙인다. this는 그것을 기술한 객체 자체를 나타냅니다.

 

class Scope

{

  int zoom = 1;                    <--- zoom은 필드명

  void print()

  {

    int zoom = 2;                  <---- zoom 은 지역변수명

   Console.WriteLinew(zoom + ", " + this.zoom);   // zoom은 지역변수를 가르키고 this.zoom 은 필드명을 가르킨다.

  }

}

728x90
반응형

'프로그래머 > 코딩(C#)개념정리' 카테고리의 다른 글

C#_클래스_메소드의 호출_2  (22) 2023.03.06
C#_클래스_메소드의 호출_1  (22) 2023.03.05
C#_클래스_메소드의 정의  (37) 2023.03.01
C#_클래스_필드  (10) 2023.02.28
C#_클래스_객체의 생성  (12) 2023.02.27