.NET에서 "문자열"과 "문자열"의 차이점은 무엇입니까?


15

.NET Framework에서는 최소한 C # 언어로, 문자열 유형의 두 가지 "버전"이 있습니다.

  • "끈"
  • "끈"

그들은 상호 교환 가능한 것처럼 보이지만 실제로는입니까? 상호 교환이 불가능한 경우 일반적으로 다른 것을 사용하는 것이 더 좋으며 어떤 상황에서 사용하는 것이 더 낫습니까?


1
이 질문과 유사합니다 : stackoverflow.com/q/6000517/6504
Agent_9191

2
일반적으로 형식을 참조 할 때는 소문자 버전을 사용하고 System.String의 정적 메서드를 호출 할 때는 대문자 버전을 사용하는 경향이 있습니다.
Joel Mueller


2
string에 존재하지 않으며 .netC #에만 존재합니다.
코드 InChaos

1
비록 이것이 스택 오버플로에 조금 더 적합 할 수도 있지만, 프로그래머에게는 전혀 주제가 아니라고 생각합니다. 스택 오버플로에는 이미 적어도 하나의 복제본이 있기 때문에 이것을 마이그레이션하는 데 아무런 의미가 없습니다. 따라서 마이그레이션을 위해 플래그 지정 / 닫기 투표를 중지하십시오. 닫혀 야한다고 생각되면 멋지지만 마이그레이션되지 않아야합니다.
yannis

답변:


30

MSDN 에 따르면

string 은 .NET Framework에서 String 의 별칭입니다 .

여기서 "String"은 실제로 System.String입니다.

나는 그것들이 상호 교환 가능하고 언제 어디서 사용 해야하는지 차이가 ​​없다고 말하고 싶습니다.

어느 것을 사용했는지 일관성을 유지하는 것이 좋습니다.


어떤 이유로 나는 문자열이 값 유형 문자열 주위의 클래스 래퍼라는 것을 내 머리 속에 가지고 있었고 이것은 권투의 아이디어로 이어집니다 ... 나는 완전히 잘못 되었습니까?
Aaron Anodide

1
@Gabriel No String(따라서 string별칭)는 참조 유형입니다.
Kris Harper

@ 가브리엘 : 자바가 바이트 대 바이트와 같은 것들로 그렇게하지 않습니까?
whatsisname

Double vs double 및 기타 데이터 유형에서도 마찬가지입니까?
Gavin Coates

1
@AaronAnodide 나는 그것이 Java 규칙이라고 생각합니다.
KChaloux

20

지적했듯이, 그것들은 똑같으며 string단지 별명입니다.String 입니다.

가치있는 것을 위해 string변수, 속성, 반환 값 및 매개 변수 유형을 선언 하는 데 사용 합니다. 이것은 다른 시스템 유형의 사용과 일치 - int, bool, var등 (비록 Int32Boolean 도 정확).

내가 사용하는 String것처럼, String 클래스의 정적 메소드를 사용하는 경우 String.Split()String.IsNullOrEmpty(). 메소드가 클래스에 속하기 때문에 이것이 더 의미가 있다고 생각하며 다른 정적 메소드를 사용하는 방법과 일치합니다.


우리는이 컨벤션도 직장에서 사용하며 좋아합니다. 내 뇌는 자동으로 연결합니다.
SBI

4

소문자를 사용하는 것이 좋습니다 string. 대문자 String는 가져온 네임 스페이스에서 찾은 첫 번째 클래스 인 String을 사용합니다 System.String. 일반적으로 입니다. 대신 자신의 String 클래스를 사용할 수 있습니다.


3
동일한 이름을 가진 두 개의 다른 가져온 유형이 있고 네임 스페이스를 규정하지 않고 해당 이름을 사용하면 오류가 발생합니다.
svick

일을 속일 수는 있지만 속일 String수는 없습니다 string.
Bryan Boettcher

아직도, 나는 그것이 사용하기에 충분한 이유라고 생각하지 않습니다 string.
svick

5
"하나가 끊어 질 것"과 "하나가 끊어지지 않을 것"은 다른 이유는 무엇입니까?
Bryan Boettcher

4

string 단순히 C # 키워드입니다. System.String

이 키워드의로, 다른 등 문체, 당신은 오히려보다 키워드를 사용하는 것을 선호 할 수 있다면 ..하지만, 편집기를 착색 당신의 구문은 / IDE는 INT와 같은 이중 키워드 색상에 표시됩니다 System.String단지 유형 (또는 String후 너는 해냈어using System; .

이것은 비록 같이, 비록 틈새 점이며 bool, char, int, doublestring시스템 유형에 대한 모든 키워드 별명, string인 홀수 하나 초과가 참조 형식이고 다른 값 유형 같다.


4
object참조 유형의 키워드 별칭이기도합니다.
nikie

아, 그렇습니다. 그 점에 대해 모두 잊어 버렸습니다. 알림 주셔서 감사합니다.
JBR 윌킨슨

2

string에 대한 별칭 일뿐 String입니다. 궁극적으로 동일합니다.

나는 일반적으로 사용하지만 당신은, 당신이 선호하는 중 사용할 수있는 string기본 데이터 형식처럼 많이 사용에 내가 계획하고있을 때 (유사에 int, float또는 bool)와 String나는 객체 / 클래스로 사용에 대한 계획이있을 때. 예를 들면 다음과 같습니다.

string foo = "   ";
if (String.isNullOrWhitespace(foo)) 
{
    // ...
}

위의 경우, foo단순히 텍스트를 효과적으로 저장하기 위해 (기본적으로) 사용할 계획이므로 사용합니다 string. 그러나 전화 할 때 String.isNullOrWhitespace(string)사용 String합니다. 일반적으로 클래스 이름의 첫 글자는 대문자 ( String)이지만 첫 글자 (예 :) 는 대문자 int가 아니기 때문에 이렇게합니다.


-2

문자열은 네임 스페이스 System.String과 함께 사용되며 문자열은 C # 컴파일러 사양과 함께 사용되며 System.String 은 참조 유형 값입니다. 리터럴 목적으로 만 시스템 오브젝트, 문자열을 처리하는 것이 좋습니다. 시스템과 시스템 모두 작동합니다.

string TC = new System.String('/', 5);

문자열은 비교, 동등 및 기타 목적으로도 사용됩니다.


4
이것은 이전의 6 가지 답변보다 실질적인 것을 제공하지 않는 것 같습니다
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.