> 백엔드 개발 > C++ > C#이 다른 범위에서 변수를 다시 선언하는 것에 대해 불평하는 이유는 무엇입니까?

C#이 다른 범위에서 변수를 다시 선언하는 것에 대해 불평하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-16 16:58:15
원래의
372명이 탐색했습니다.

Why Does C# Complain About Redeclaring a Variable in Different Scopes?

C# 변수 범위: 컴파일러가 'x'를 혼동하는 이유는 무엇입니까?

다음 C# 코드 조각:

<code class="language-csharp">if (true)
{
    string var = "VAR";
}

string var = "New VAR!";</code>
로그인 후 복사

외부 범위에서 'var' 변수를 두 번째로 선언하면 다음 오류가 발생합니다.

오류 1: 'var'이라는 지역 변수는 "하위" 범위에서 다른 것을 나타내는 데 이미 사용된 'var'과 의미가 다르기 때문에 이 범위에서 선언할 수 없습니다.

이 오류는 C#에서 이름이 같은 변수가 겹치는 범위에서 다시 선언되는 것을 방지하는 엄격한 범위 지정 규칙을 적용하기 때문에 발생합니다. 첫 번째 'var' 선언은 내부 범위로 제한되고 외부 범위에는 영향을 주지 않는 것처럼 보이지만 컴파일러는 두 인스턴스를 동일한 범위에 있는 것으로 처리합니다.

문제는 컴파일러 설계의 한계에서 비롯됩니다. 변수가 선언되거나 사용되는 순서에 관계없이 범위만을 기준으로 변수를 분석합니다. 따라서 이론적으로 유효한 코드는 다음과 같습니다.

<code class="language-csharp">string var = "New VAR!";

if (true)
{
    string var = "VAR";
}</code>
로그인 후 복사

컴파일러도 이를 유효하지 않은 것으로 간주합니다.

이 모호성을 해결하려면 다른 변수 이름을 사용하거나 형제 범위를 사용하는 것이 좋습니다.

<code class="language-csharp">string varOuter = "New VAR!";

if (true)
{
    string varInner = "VAR";
}</code>
로그인 후 복사

동위 범위는 기술적으로 유효하지만 혼란스러울 수 있으며 일반적으로 권장되지 않습니다. 또는 변수 이름을 바꾸는 것이 더 나은 방법입니다. 이렇게 하면 다른 범위에서 변수를 구별하는 데 도움이 됩니다.

위 내용은 C#이 다른 범위에서 변수를 다시 선언하는 것에 대해 불평하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿