본문 바로가기

ASP.net with C# (웹폼)

C#문자열과 @기호, @의미

C#에서 @기호는 다양한 경우에 사용되지만, 여기서 소개해 드릴 내용은 문자열에 붙여 사용하는 @의미에 대해 설명드리겠습니다.

결론을 먼저 말씀드리자면, 문자열 변수 값 지정시 다음과 같은 경우에 @기호를 사용하면 편리합니다.

1. 파일경로 표현시(백슬래시 '\' 사용)

2. 쿼리문 작성시(string 여러줄의 문자열 지정)


다음의 코드를 보시면 문자열에 @기호를 사용할때와 하지 않을 때의 의미차이를 쉽게 파악하실 수 있습니다. 

//일반문자열로 표현시
string file = "C:\\Users\\Downloads\\ReadMe.txt";
string sql = "SELECT " 
           + "  Seq " 
           + "  , Name " 
           + "  , Flavor " 
           + "  , Rank " 
           + "FROM Fruit ";

//@기호 사용시
string file = @"C:\Users\Downloads\ReadMe.txt";
string sql = @"SELECT 
                  Seq
                  , Name 
                  , Flavor 
                  , Rank 
               FROM Fruit ";


1. 파일경로 표현시

일반적으로 문자열은 다음과 같이 사용됩니다.(일반 문자열 리터럴)

string myName = "홍길동";


그런데, string 에 파일 경로명을 넣게 되면 문제가 조금 복잡해집니다.

예를 들어, 파일경로 C:\Users\Downloads\ReadMe.txt 를 string에 넣으려면 다음과 같이 해야합니다.

string file = "C:\\Users\\Downloads\\ReadMe.txt";


위와 같이 \(백슬래시)를 두 번 써주는 이유는 \로 시작하면 이스케이프 시퀀스로 인식되기 때문입니다.

  • 이스케이프 시퀀스란?
백슬래시(\) 뒤에 한 문자나 숫자가 오는 문자 조합으로 줄 바꿈, 작은따옴표, 백 슬래시 등을 나타내려면 이스케이프 시퀀스를 사용해야 하며 이는 단일 문자로 간주됩니다. 

 이스케이프 시퀀스

의미 

 \n

 줄 바꿈

 \r

 캐리지 리턴

 \t

 가로 탭

 \v

 세로 탭

 \'

 작은따옴표

 \"

 큰따옴표

 \\

 백슬래시


문자열 텍스트에 백슬래시 문자가 포함된 경우 가독성, 편의성을 위해 다음의 코드처럼 @기호를 사용하면 다음과 같이 간단하게 표현됩니다.(축자 문자열 리터럴)

string file = @"C:\Users\Downloads\ReadMe.txt";

2. 쿼리문 작성시

다음은 SQL쿼리와 같이 string 여러줄을 표현할 때 유용하게 사용됩니다. 문자열의 값을 여러줄로 넣으려면 행마다 +로 문자열을 이어주거나 StringBuilder를 사용해야 하는데요 @를 사용하면 다음과 같이 심플하게 string 여러줄을 표현할 수 있습니다.

string sql = @"SELECT 
                  Seq
                  , Name 
                  , Flavor 
                  , Rank 
               FROM Fruit ";

//다이내믹 쿼리문을 작성할 때도 심플하게 표현됩니다.
string fruitName = "사과";

string sql = @"SELECT 
                  Seq 
                  , Name 
                  , Flavor 
                  , Rank 
               FROM Fruit 
               WHERE Seq = '"+ fruitName +"'";


프로젝트의 성공을 기원합니다.


참조 : MSDN