C#을 배우다 보면 string과 String이라는 두 가지 표기를 자주 접하게 됩니다. 결론부터 말하자면, 이 둘은 사실상 동일한 타입입니다. String은 .NET의 System.String 클래스를 의미하고, string은 C#에서 System.String에 부여된 별칭(alias)입니다.
string 별칭 사용 예시
다음과 같이 소문자 string 키워드를 사용해 변수를 선언할 수 있습니다.
string str = "Welcome!";
반면 대문자 String은 주로 클래스의 정적 메서드를 호출할 때 사용하는 것이 일반적인 관례입니다. 예를 들어 형식화된 문자열을 만들 때 다음과 같이 작성합니다.
string str = String.Format("Welcome! {0}!", user);컴파일러 입장에서는 두 표기가 완전히 같은 타입으로 처리되므로 어느 쪽을 사용해도 무방하지만, C# 개발자들 사이에서는 변수 선언에는 string, 정적 메서드 호출에는 String을 쓰는 스타일이 널리 권장됩니다.
C# 기본 데이터 형식의 별칭 목록
string처럼 C#의 모든 기본 데이터 형식은 .NET 클래스에 대한 별칭을 가지고 있습니다. 전체 목록은 다음과 같습니다.
object : System.Object string : System.String bool : System.Boolean float : System.Single double : System.Double decimal: System.Decimal byte : System.Byte sbyte : System.SByte short : System.Int16 ushort : System.UInt16 int : System.Int32 uint : System.UInt32 long : System.Int64 ulong : System.UInt64 char : System.Char
C# 문자열(string) 형식의 특징
C#의 string 형식은 변수에 임의의 문자열 값을 할당할 수 있게 해주며, 내부적으로는 System.String 클래스를 참조합니다. 이 클래스는 최상위 타입인 object(System.Object)로부터 파생됩니다.
문자열 값은 크게 두 가지 방식의 리터럴(literal)로 할당할 수 있습니다.
- 따옴표(quoted) 리터럴: 일반적인 큰따옴표(")로 감싸는 방식으로, 이스케이프 시퀀스(\n, \t 등)가 적용됩니다.
- @ 따옴표(@quoted) 리터럴: 문자열 앞에 @를 붙이는 방식으로, 이스케이프 시퀀스를 무시하고 그대로 해석합니다. 파일 경로나 정규식 표현에 유용합니다.
사용 예제
String str = "Okay!"; // @quoted 리터럴 예시 string path = @"C:\Users\Documents\file.txt";
정리하면, string과 String은 동일한 System.String 타입을 가리키며, 코드 가독성과 일관성을 위해 위에서 소개한 관례대로 사용하는 것이 좋습니다.