다음을 통해 공유


컴파일러 오류 CS0136

'var'이라는 지역 변수는 이미 '부모 또는 현재/자식' 범위에서 다른 것을 나타내는 데 사용되는 'var'에 다른 의미를 부여하므로 이 범위에서 선언할 수 없습니다.

변수 선언은 범위에 있는 다른 선언을 숨깁니다. CS0136을 생성한 줄에 선언된 변수의 이름을 바꿉니다.

예시

다음 샘플에서는 CS0136을 생성합니다.

// CS0136.cs  
namespace MyNamespace  
{  
   public class MyClass  
   {  
      public static void Main()  
      {  
         int i = 0;  
         {  
            char i = 'a';   // CS0136, hides int i  
         }  
         i++;  
      }  
   }  
}  

컴파일러는 다음 예제와 같이 변수 선언의 텍스트 순서에 관계없이 이 오류를 보고합니다.

// CS0136.cs  
namespace MyNamespace  
{  
   public class MyClass  
   {  
      public static void Main()  
      {
         if (true)
         {  
            int i = 1;   // CS0136, hides i outside this block
         }
         int i = 0;   
         i++;  
      }  
   }  
}  

C# 언어 사양에서:

지역 변수 선언 공간과 중첩된 지역 변수 선언 공간에 동일한 이름의 요소가 포함되는 것은 오류입니다. 따라서 중첩된 선언 공간 내에서는 바깥쪽 선언 공간에서 지역 변수 또는 상수와 이름이 같은 지역 변수 또는 상수는 선언할 수 없습니다. 두 선언 공간 모두 다른 선언 공간을 포함하지 않는 한 두 선언 공간에 동일한 이름의 요소가 포함될 수 있습니다.