사용 된 변수에 대해 새 범위를 만듭니다. 변수의 범위는 때때로 까다로울 수 있습니다. 예를 들어, 게시 한 코드에서;
switch(x)
{
case(a):
{
int i = 0;
}
break;
case(b):
i = 1; // Error: The name 'i' doesn't exist in the current context
break;
}
오류가 case(b)
a
변수가 범위를 벗어나 액세스 여기에서 이해된다. 이제 다른 한편으로는
switch(x)
{
case(a):
{
int i = 0;
}
break;
case(b):
int i = 1; // Error: A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'child' scope to denote something else
break;
}
위의 두 가지 오류는 서로 상반됩니다. 이 문제를 얻으려면
switch(x)
{
case(a):
{
int i = 0;
}
break;
case(b):
{
int i = 1; // No error
}
break;
}
에릭 Lippert의이 경우 문에서 변수 범위를 설명하는 아주 좋은 link to his blog를 공유, 두 경우 문에서 개별적으로 범위를 정의해야합니다. 당신은 그것을 봐야합니다.
출처
2012-04-10 19:42:08
ABH
경우 A의 정의 된 변수는 그 블록에서만 볼 수있는 것을 제외하고는 차이가 없습니다. –
아무 것도 없습니다.케이스로 범위가 지정된 오브젝트를 만들고 사용하려는 경우가 있습니다. 괄호가 없으면 사용자가 볼 수있는 범위가 더 넓습니다. – Robinson
당신이 물어 보지 못한 것이지만, 나는'case' 블록을 읽기가 어렵다고 느낍니다. 범위 지정 또는 다른 복잡성이 필요하면 새로운 방법을 얻습니다. –