>백엔드 개발 >C++ >변수 범위에 대한 이 C# 코드가 컴파일에 실패하는 이유는 무엇입니까?

변수 범위에 대한 이 C# 코드가 컴파일에 실패하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-12 14:33:43822검색

Why Does This C# Code About Variable Scope Fail to Compile?

C# 변수 범위 및 컴파일 문제: 자세한 설명

C#의 변수 범위는 프로그램 내 변수의 접근성을 나타냅니다. 일반적인 범위 관련 컴파일 오류를 설명하기 위해 두 가지 코드 예제를 살펴보겠습니다.

예 1: 컴파일 실패

다음 코드 조각은 컴파일에 실패합니다.

<code class="language-csharp">public void MyMethod()
{
    int i = 10;

    for (int x = 10; x < 20; x++)
    {
        int i = x; // Point 1: Error - Duplicate variable 'i'
        object objX = new object();
        if (x > 15)
        {
            object objX = new string(""); // Point 2: Error - Redeclaration of objX
        }
    }
}</code>

예제 1의 오류 분석

이 코드는 두 가지 주요 C# 범위 지정 규칙으로 인해 실패합니다.

  1. 범위 내의 고유한 변수 이름: 단일 코드 블록(중괄호 {}으로 정의) 내에서 동일한 이름을 가진 두 개의 변수를 선언할 수 없습니다. 포인트 1은 위반을 보여줍니다. int i = x;i 루프 블록 내에서 for을 다시 선언하여 외부에 선언된 int i = 10;과 충돌합니다.

  2. 일관적인 식별자 참조: 블록 내에서 식별자는 동일한 엔터티를 일관되게 참조해야 합니다. 포인트 2는 이를 위반합니다. objXobject으로 선언된 다음 중첩된 string 블록 내에서 if으로 다시 선언됩니다. C#은 동일한 범위 내에서 이러한 재정의를 허용하지 않습니다.

예 2: 성공적인 편집

이 예는 중첩 루프도 사용하면서 성공적으로 컴파일됩니다.

<code class="language-csharp">public void MyMethod()
{
    for (int x = 10; x < 20; x++)
    {
        int i = x;
        object objX = new object();
    }
    for (int x = 20; x < 30; x++)
    {
        int i = x;
        object objX = new object();
    }
}</code>

예제 2가 컴파일되는 이유

예 2에서는 다음과 같은 이유로 이전 오류를 방지합니다.

  • 고유 블록:for 루프는 자체 별도 블록을 정의합니다. 한 루프 내에서 선언된 변수는 다른 루프에서는 표시되지 않습니다.

  • 블록당 고유 식별자: 변수 이름(i, x, objX)은 두 루프에서 동일하지만 별도의 범위에 상주하므로 고유 변수로 처리됩니다. .

  • 범위 중복 없음: 변수 선언 공간이 불법적으로 중복되지 않습니다. 각 변수는 해당 루프의 블록 내에만 존재하므로 충돌이 없습니다.

요약하자면, 컴파일 오류를 방지하려면 C#의 변수 범위 지정 규칙을 이해하는 것이 중요합니다. 블록 내에 선언된 변수는 해당 블록 내에서만 액세스할 수 있습니다. 동일한 이름으로 변수를 다시 선언하거나 동일한 범위 내에서 식별자를 일관되지 않게 사용하면 컴파일 오류가 발생합니다.

위 내용은 변수 범위에 대한 이 C# 코드가 컴파일에 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.