.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등 (비록 Int32및Boolean 도 정확).

내가 사용하는 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, double및 string시스템 유형에 대한 모든 키워드 별명, 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.