IT

C # 변수 이름 앞에 @를두면 무엇을합니까?

lottoking 2020. 6. 29. 07:40
반응형

C # 변수 이름 앞에 @를두면 무엇을합니까? [복제]


이 질문에는 이미 답변이 있습니다.

나는 C # 레거시 코드로 작업하고 있으며 변수 이름 앞에 많은 @ 기호를 보았습니다. 이것은 무엇을 의미합니까?

현재 예약되지 않은 공통 이름을 가진 변수 앞에서 많이보고 있습니다. 예 :

MyProcedure(@step.LoadInstanceId, @step.ResultCode, @step.StatusCode);

이 단계가 예약어가 아니기 때문에 탈출해야 할 이유가 있습니까?


예약 키워드를 var로 선언 할 수있는 방법 일뿐입니다.

void Foo(int @string)

예를 들어 'public'과 같은 예약어를 변수 이름으로 사용할 수 있습니다.

string @public = "foo";

불필요한 혼란을 초래할 수 있으므로 권장하지 않습니다.


문자열 앞에 @를 넣으면 컴파일러는 문자열 내에서 발견 된 이스케이프 시퀀스를 처리하지 않도록 지시합니다.

에서 문서 :

@ -quoting의 장점은 이스케이프 시퀀스가 ​​처리되지 않아 정규화 된 파일 이름과 같이 쉽게 쓸 수 있다는 것입니다.

@"c:\Docs\Source\a.txt"  // rather than "c:\\Docs\\Source\\a.txt"

@ 따옴표로 묶은 문자열에 큰 따옴표를 포함 시키려면 큰 따옴표를 사용하십시오.

@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.

@ 기호의 또 다른 사용은 C # 키워드가되는 참조 (/ 참조) 식별자를 사용하는 것입니다. 자세한 내용은 2.4.2 식별자를 참조하십시오 .


이것은 C #에서 예약어를 이스케이프합니다.


원래의 질문은 예약되지 않은 단어를 피할 수있는 이유를 묻습니다. 내 마음에 오는 것은 step미래에 예약어가되면 코드 예제는 여전히 컴파일 될 것입니다. 코드 생성기에 유효한 옵션이라고 생각합니다.


@ 기호는 언어 키워드와 동일한 식별자와 함께 사용됩니다. 비 C # 코드와 상호 운용되는 두 가지 주요 용도가 있습니다. VB 또는 IronPython과 같은 언어에서 키워드는 C #과 동일하지 않으며 C # 키워드와 일치하는 이름을 가진 클래스 및 속성을 선언했을 수 있습니다. 이 기능이 없으면이 코드는 C #에서 액세스 할 수 없습니다. -기계 생성 코드. 코드 생성기가 일부 외부 소스 (예 : WSDL)를 기반으로 코드를 생성하는 경우 생성자는 모든 식별자 앞에 @를 붙이고 C # 키워드와 일치하는 식별자를 확인 및 변환 할 수 없습니다.

당신의 사건이 두 번째가 아니라고 확신합니까?

참고 URL : https://stackoverflow.com/questions/254669/what-does-placing-a-in-front-of-ac-sharp-variable-name-do

반응형