namespace ConsoleApp1
{
class Program
{
public int a;
static void Main(string[] args)
{
string s;
Console.WriteLine(@"""I am a string.""");
}
}
}
에서 출력결과과 왜
"I am a string"
이죠?
@ 기호랑 함께쓰면 이스케이프 문자열 같은거 해석하지 않고 그대로 내보낸다는데
@" " 이거까지가 기존에 Consol.WriteLine("")랑 같을 것이고
그다음에 "I am a string" 하고 "" 가 한개 더있으니
""I am a string""아닌가요
@ 붙었을땐 ""가 "를 출력하는 기호임
흠 이해가 잘안가는데...
따옴표도 구분 안하고 그대로 내보내면 여는 따옴표 닫는 따옴표 구분을 못하잖아
Console.WriteLine("I am a string."); 하면 I am a string Console.WriteLine(@""I am a string.""); 하면 "I am a string" Console.WriteLine(@"""I am a string."""); gkaus ""I am a string"" 되는거 아닌가요?
두번째꺼 ide에 함 써 봐라 어떻게 나오는가
어.. 아예 안되는데요?
당연하지 왜냐하면 @"" <-여기서 이미 string은 끝나고 I am a string 은 변수로 인식되니까
요지는 @"""" == @"\"" 라는거임
아 오른쪽 잘못썼다 골뱅이 빼야되는데
아...@ 하고 " " 이 한셋트가 이미 문자열로 인식되어서 Console.WriteLine 출력은 끝이나고 그다음 "I am a string"은 아예 뭐 출력 문법에 맞지 않으니까 그렇게되는건가요?
아 빈게 아니라 @" " 안에 " 이게 \" 이거 한문자로 인식되어서 끝이 난거고 그다음은 문법에 안맞으니까 오류다?
@""I am a string"" 은 구분짓자면 (@"")변수("")와 같은거임
양쪽의 따옴표를 볼게 아니라 왼쪽은 왼쪽끼리 오른쪽은 오른쪽끼리만 string으로 된거라니까
아아 무슨 말인지 알겠어요 저는 지금 좌우 한개씩을 한쌍으로 보고 있었네요 그러니까 제일 좌측에 @"" 이걸로 이미 끝이났고 나머지는 "I am a string.""" 이렇게 되는거네요 이거는 문법적으로 맞지 않는거고
맞나..?
ㄴㄴ 나머지 중에서도 I am a string은 변수를 띄어쓰기 써가며 친걸로 봐야지
string은 오직 따옴표 안에 있을때만 string이야 나머진 변수고
형님 지금 두번째꺼 말씀하시는거죠?
ㅇㅇㅇ 설마 세번째꺼 말한거였음?
아 전 세번째꺼 설명하시는줄ㅋㅋㅋ근데 변수 띄어쓰기 얘기하시길래 두번째꺼 같길래.. 암튼 두번째꺼에서 젤 좌측에 @"" 하면 I am string."" 만 남으니까 I, am, string(이건 뭐 키워드니까..)암튼 자체적으로 문법도 안맞고하니까 걍 오류다 이건거같은데..맞나요
Excellent
형님 귀찮게해서 죄송한데 그럼 Console.WriteLine(@"""I am a string."); 에서 젤 좌측에 @"" 이거 빼면 남는게 "I am a string." 인데 왜 출력결과는 "I am a string.이 나오죠? 그냥 I am a string이 나와야하는거 아닙니까
@가 붙고 따옴표로 string문을 시작할 때 안에 따옴표 두개가 붙어있는게 있으면 \"로 여기고 계속 string문을 유지하게 돼
@ 뺀걸로 바꾸자면 "\"I am a string."이 되는거지
아..이게 @" " " 에서 @" " 가 안의 " 이걸 출력하고 그 다음에 I am a string. 이걸 출력한다는 말씀이군요.
고런데 이렇게되면 @""" 이걸 해결하고 나면 남는게 I am a string." 이거라 따옴표 쌍이 안맞는데 그래도 출력을 하네요..?
왼쪽부터 순서대로 봐야대 @"""I am a string" 여기서 @" 로 string문인걸 인식하고 바로 옆에 있는 ""는 따옴표 두개가 붙은거니까 \"로 처리해서 그 뒤까지 string으로 유지된 다음에 string" <- 이 따옴표를 만나서 비로소 string문이 끝난거로 보는거야
아하 그래서 "" 두개가 붙어 있으면 \" 로 여긴다고 말씀하셨군요. 이렇게 되면 제가 방금껀 잘못 해석을 하고 있었네요 @"""에서 @"" 사이에 있는 "를 출력하는게 아니라 @" 이거부터 시작해서 string 상수로 인식을 하고 그 다음 ""가 붙어있으니까 \" 으로여기고 @는 \"를 "로 그대로 출력하니까 "이거후에 I am a string. 문자열 출력하고 string 상수를 마지막으로 인식하는 닫는 " 까지..해서 최종 출력결과는 "I am a stirng. 이렇게 되는거네요
더이상 내가 가르칠건 없다. 이만 하산해보거라
ㅋㅋ형님 멍청한놈 붙잡고 있느라 고생많으셨습니다 감사합니다
쌍따옴표랑, @$인 경우는 {{랑 }}는 이스케이프함