C# 문자열 리터럴(String Literal)이란?
문자열 리터럴 또는 상수는 큰따옴표(" ")로 묶거나, @ 기호를 붙인 @" " 형태로 표현합니다. 문자열에는 일반 문자(plain character), 이스케이프 시퀀스(escape sequence), 유니버설 문자(universal character) 등이 포함될 수 있으며, 이러한 구성 방식은 문자 리터럴(character literal)과 매우 유사합니다.
대표적인 문자열 리터럴의 예는 다음과 같습니다.
"Hello, World" "Welcome, \n" @"C:\Docs\file.txt"
@ 기호를 붙인 축자적 리터럴(verbatim literal)은 이스케이프 시퀀스를 해석하지 않고 입력한 그대로 문자열에 담기 때문에, 역슬래시(\)가 자주 등장하는 파일 경로나 여러 줄 텍스트를 다룰 때 특히 유용합니다.
문자열 리터럴 사용 예제
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
// 일반적인 문자열 리터럴
string str1 = "Hello, World";
Console.WriteLine(str1);
// @를 사용한 여러 줄 문자열
string str2 = @"Welcome,
Hope you are doing great!";
Console.WriteLine(str2);
}
}
}
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Hello, World Welcome, Hope you are doing great!
C# 문자열 객체(String Object) 만들기
C#에서 string은 System.String 클래스의 별칭(alias)이므로, 문자열 객체는 다음과 같은 다양한 방법으로 생성할 수 있습니다.
- 문자열 리터럴을 String 변수에 할당하는 방법
- String 클래스의 생성자를 호출하는 방법
- 문자열 연결 연산자(+)를 사용하는 방법
- 문자열을 반환하는 속성(property)을 조회하거나 메서드를 호출하는 방법
- 포맷팅 메서드를 호출하여 값이나 객체를 문자열 표현으로 변환하는 방법
두 문자열 비교 예제
다음 예제는 문자열 객체를 생성한 뒤, String.Compare() 메서드로 두 문자열을 비교하는 코드입니다. 이 메서드는 두 문자열이 동일하면 0을 반환합니다.
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
string str1 = "John";
string str2 = "Andy";
if (String.Compare(str1, str2) == 0) {
Console.WriteLine(str1 + " and " + str2 + " are equal strings.");
} else {
Console.WriteLine(str1 + " and " + str2 + " are not equal strings.");
}
Console.ReadKey();
}
}
}
실행 결과는 다음과 같습니다.
John and Andy are not equal strings.
"John"과 "Andy"는 서로 다른 문자열이므로 String.Compare()가 0이 아닌 값을 반환하고, 그 결과 else 블록의 문장이 출력됩니다. 참고로 String.Compare()는 기본적으로 대소문자를 구분하며 문화권 규칙에 따른 사전순 비교를 수행하므로, 대소문자 무시 비교가 필요하다면 세 번째 인자로 true(ignoreCase)를 전달하면 됩니다.