📌 공부 계기

회사 프로젝트의 변수 이름에 @가 붙어있는 케이스를 발견 

변수에 @사인이 들어가는 걸 처음봐서 찾아보니 C#에서는 여러 기능으로 @을 사용하고 있어 정리해본다. 

 


사용 1 ) 문자 그래도 인식 방법

대입하고자 하는 문자열 앞에 @을 붙여주어 사용한다. 

Escape문자를 무시하고 문자를 그대로 문자열로 인식한다

// 기본
string str = "C:\\Test\\Test.txt";

// @ 사용
string str = @"C:\Test\Test.txt";

 

또한 문자열을 그대로 인식하기 때문에 Enter도 인식하여 \n Escape 문자 없이 복수행으로 작성된 문자열을 그대로 인식할 수 있다. 

// 기본 
string str = "기본 문자열은 Enter시 \\n 을 사용하여야 합니다. \n 줄바꿈이 되었습니다.";

// @ 사용
string str = @"@을 사용한 문자열은 Enter시 \n 을 사용하지 않습니다.
줄바꿈이 되었습니다.";

 


사용 2 ) C# 키워드를 변수명으로 사용

C# 키워드는 예약어로 원래 변수명으로 사용할 수 없지만 앞에 @을 붙여주게 되면 변수명으로 사용할 수 있다. 

선언할 때도 대입하여 사용할때도 @을 붙여 사용해야 한다. 

예약어를 변수명으로 사용하는 것은 기피되어야 하나,
피치못하게 사용해야하는 케이스 등에 사용한다. ( ex. ASP.NET MVC의 Html Helper )

string @object = "객체";

@object = "문자열" + @object;
Console.WriteLine(@object);
// 문자열객체

 

 

 


🧐 My Case

우리회사에서 발견한 변수는 코드비하인드가 아닌 aspx 파일에서 asp태그의 id를 fixed로 사용했는데 

이게 C#에서 fixed키워드는 "가비지 콜렉터에서 이동 가능한 변수를 재배치 할 수 없도록 포인터를 고정시키는 역할"을 하는 키워드이다.

따라서 키워드 변수를 사용할 수 밖에 없는 상황.

근데 생각해보면 이런 상황을 피하기 위해 태그 쪽 id를 변경하여 키워드 변수를 사용하지 않도록 하는게  더 좋을 거 같긴하다.

해당 변수 사용된 걸 전체 파악해서 나중에 건의해보는 걸로..


참고 자료 :

 

C#에서 @을 사용할 때 - C# 프로그래밍 배우기 (Learn C# Programming)

@ 심벌을 사용법 1 @ 심벌을 문자열 앞에 사용하면, 해당 문자열 안의 Escape 문자를 무시하고 문자 그대로 인식하도록 한다. 예를 들어, 파일 패스를 지정할 때, Backslash를 한번 지정하면 이는 Escape

www.csharpstudy.com

 

c# 에서 checked, fixed, lock, params

1. checked / unchecked checked는 키워드는 정수 형식 산술 연산 및 변환에 대한 오버플로 검사를 명시적으로 사용하도록 설정하는 데 사용됩니다. int ten = 10; int i2 = 2147483647 + ten; 상수 값만 포함된 식이

moonpmj.tistory.com

 

+ Recent posts