2009-04-07 5 views
9

ReSharper가 다음과 같은 코드를 생성하는 것을 여러 차례 보았습니다.델리게이트의 접두사 @는 특별한 의미가 있습니까?

delegate void myHandler(int i); 
myHandler myHandlerContainer; 
... 
foreach (Delegate @delegate in myHandlerContainer.GetInvocationList()) 
{...} 

@delegate의 ' @'은 해당 변수에 특별한 의미를 부여합니까?
아니면 그냥 전에 만난 적이없는 컨벤션입니까?

답변

14

좀 더 세부 정보 :

접두사 "@"다른 프로그래밍 언어와 인터페이스 할 때 유용 이다 식별자로 키워드의 사용은 할 수 있습니다. @ 문자는 실제로 식별자의 일부가 아니므로 은 다른 언어로 표시되며 접두어없이 식별자로 사용됩니다. @ 접두사가 붙은 식별자는 축 어적 식별자 인 이라고합니다. 키워드가 아닌 식별자에 @ 이라는 접두사를 사용하면 허용되지만, 스타일의 문제로는 을 강력하게 사용하지 마십시오.

C# Language Specification: 2.4.2 Identifiers.

'@'접두사는 예를 들어. C# 이외의 다른 언어로 작성된 라이브러리에 정의 된 "delegate"라는 클래스에서 파생됩니다.

다른 경우에는이 구문을 사용하지 말고 코드 가독성을 높이고 첨부 된 특별한 의미가 있는지 혼란을 피하기 위해 C# 키워드 (예 : 값 대신 값)와 다른 식별자를 만드는 것을 권장하지 않습니다.

가 언급 한 변수 명명에 대한 또 다른 흥미로운 사실이있다 : 두 개의 연속 문자 (U + 005F)를 밑줄 포함

식별자는 구현에 의해 사용을 위해 예약 있습니다. 예를 들어 구현에서는 확장 된 키워드를 사용하여 밑줄로 시작하는 키워드를 제공 할 수 있습니다.

+0

우수! 그게 제가 찾고 있던 참조입니다 :-) – devstuff

12

"@delegate"는 "delegate"키워드와 변수 이름을 구별하는 것입니다. MSDN에서