Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 문자열 리터럴 vs 문자열 객체: 개념부터 예제까지 한 번에 이해하기


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#에서 stringSystem.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)를 전달하면 됩니다.