etc./StackOverFlow

C#에서 문자열과 문자열의 차이점은 무엇입니까?

청렴결백한 만능 재주꾼 2021. 9. 25. 02:02
반응형

질문자 :Community Wiki


예( 케이스 참고 ):

 string s = "Hello world!"; String s = "Hello world!";

각각의 사용 지침은 무엇입니까? 그리고 차이점은 무엇입니까?



답변자 : Community Wiki


string System.String 대한 C#의 별칭입니다.
따라서 기술적으로 차이가 없습니다. int System.Int32 와 같습니다.

지침에 따르면 일반적으로 개체를 참조할 때마다 string

 string place = "world";

마찬가지로 특정 클래스를 참조해야 하는 경우 String 을 사용하는 것이 좋습니다.

 string greet = String.Format("Hello {0}!", place);

이것은 Microsoft가 예제 에서 사용하는 경향이 있는 스타일입니다.

이제 StyleCop 에서 C# 특정 별칭의 사용을 시행하므로 이 영역의 지침이 변경된 것으로 보입니다.



답변자 : Community Wiki


완전성을 위해 여기에 관련 정보의 두뇌 덤프가 있습니다 ...

다른 사람들이 언급했듯이 string System.String 의 별칭입니다. String 사용하는 코드가 System.String String 유형이 다른 일부 다른 네임스페이스에 대한 using 지시문이 없는 경우) 동일한 코드로 컴파일되므로 실행 시에는 아무런 차이가 없습니다. 이것은 C#의 별칭 중 하나일 뿐입니다. 전체 목록은 다음과 같습니다.

 object: System.Object string: System.String bool: System.Boolean byte: System.Byte sbyte: System.SByte short: System.Int16 ushort: System.UInt16 int: System.Int32 uint: System.UInt32 long: System.Int64 ulong: System.UInt64 float: System.Single double: System.Double decimal: System.Decimal char: System.Char

stringobject 제외하고 별칭은 모두 값 유형입니다. decimal 은 값 형식이지만 CLR의 기본 형식은 아닙니다. 별칭이 없는 유일한 기본 유형은 System.IntPtr 입니다.

사양에서 값 유형 별칭은 "단순 유형"으로 알려져 있습니다. 리터럴은 모든 단순 유형의 상수 값에 사용할 수 있습니다. 다른 값 유형에는 사용 가능한 리터럴 형식이 없습니다. DateTime 리터럴을 허용하고 별칭도 있는 VB와 비교하십시오.)

명시 적으로 열거의 기본 형식을 지정하는 경우 : 당신이 별칭을 사용할 필요가있는 하나의 상황이있다. 예를 들어:

 public enum Foo : UInt32 {} // Invalid public enum Bar : uint {} // Valid

그것은 사양이 열거형 선언을 정의하는 방식의 문제일 뿐입니다. 콜론 뒤의 부분 sbyte , byte , short , ushort , int , uint , long , ulong , char 토큰 중 하나인 정수형 생산이어야 합니다. .. 예를 들어 변수 선언에서 사용되는 유형 생성과 반대입니다. 다른 차이점을 나타내지 않습니다.

마지막으로 사용할 항목에 관해서는 개인적으로 구현을 위해 모든 곳에서 별칭을 사용하지만 모든 API에는 CLR 유형을 사용합니다. 구현 측면에서 어느 것을 사용하는지는 그다지 중요하지 않습니다. 팀 간의 일관성은 좋지만 다른 누구도 신경 쓰지 않을 것입니다. 반면에 API에서 유형을 참조하는 경우 언어 중립적인 방식으로 참조하는 것이 정말 중요합니다. ReadInt32 라는 메서드는 명확하지만 ReadInt 라는 메서드는 해석이 필요합니다. 호출자는 예를 들어 Int16 int 별칭을 정의하는 언어를 사용할 수 있습니다. .NET 프레임워크 디자이너는 이 패턴을 따랐으며 BitConverter , BinaryReaderConvert 클래스에 좋은 예가 있습니다.



답변자 : Community Wiki


StringSystem.String 나타내며 .NET Framework 유형입니다. string System.String 에 대한 C# 언어 의 별칭 입니다. 둘 다 IL System.String 으로 컴파일되어 있으므로 차이가 없습니다. 당신이 좋아하는 것을 선택하고 그것을 사용하십시오. C#으로 코딩하는 경우 C# 유형 별칭이고 C# 프로그래머에게 잘 알려진 string

( int , System.Int32 ) 등에 대해서도 마찬가지입니다.



답변자 : Community Wiki


C#에서 제공된 유형 별칭을 사용하는 것에 대해 들어본 최고의 답변은 Jeffrey Richter의 저서 CLR Via C#에서 제공한 것 입니다. 그의 3가지 이유는 다음과 같다.

  • 나는 그들의 코드에서 문자열이나 문자열을 사용할지 여부를 모르고 혼동 개발자의 수를 보았다. C#에서 문자열(키워드)은 System.String(FCL 유형)에 정확히 매핑되기 때문에 차이가 없으며 둘 중 하나를 사용할 수 있습니다.
  • C#에서 longSystem.Int64 에 매핑되지만 다른 프로그래밍 언어에서는 long 이 Int16 또는 Int32 에 매핑될 수 있습니다. 사실, C++/CLI는 사실 long을 Int32 로 취급합니다. 한 언어로 소스 코드를 읽는 사람이 다른 프로그래밍 언어로 프로그래밍하는 데 익숙하다면 코드의 의도를 쉽게 잘못 해석할 수 있습니다. 사실, 대부분의 언어는 long 을 키워드로 취급하지도 않고 그것을 사용하는 코드를 컴파일하지도 않습니다.
  • FCL에는 메서드 이름의 일부로 형식 이름이 있는 메서드가 많이 있습니다. 예를 들어 BinaryReader 형식은 ReadBoolean , ReadInt32 , ReadSingle 등과 같은 메서드를 제공하고 System.Convert 형식은 ToBoolean , ToInt32 , ToSingle 등과 같은 메서드를 제공합니다. 다음 코드를 작성하는 것은 합법적이지만 float가 있는 행은 나에게 매우 부자연스럽고 그 행이 올바른지 명확하지 않습니다.
 BinaryReader br = new BinaryReader(...); float val = br.ReadSingle(); // OK, but feels unnatural Single val = br.ReadSingle(); // OK and feels good

그래서 당신은 그것을 가지고 있습니다. 이 모든 것이 정말 좋은 포인트라고 생각합니다. 그러나 나는 내 자신의 코드에서 Jeffrey의 조언을 사용하지 않습니다. 어쩌면 내가 C# 세계에 너무 갇힌 것일 수도 있지만 결국 내 코드를 프레임워크 코드처럼 보이게 만들려고 합니다.



답변자 : Community Wiki


string 은 예약어이지만 String 은 클래스 이름일 뿐입니다. 즉, string 자체를 변수 이름으로 사용할 수 없습니다.

어떤 이유로 string 이라는 변수를 원했다면 다음 컴파일 중 첫 번째만 볼 수 있습니다.

 StringBuilder String = new StringBuilder(); // compiles StringBuilder string = new StringBuilder(); // doesn't compile

string 이라는 변수 이름을 정말로 원하면 @ 를 접두사로 사용할 수 있습니다.

 StringBuilder @string = new StringBuilder();

또 다른 중요한 차이점: 스택 오버플로는 이를 다르게 강조합니다.



답변자 : Community Wiki


한 가지 차이점 using System; 을 사용하지 않고 String 을 사용할 수 없습니다. 미리.



답변자 : Community Wiki


위에서 다뤘습니다. 그러나 리플렉션에서 string 을 사용할 수 없습니다. String 을 사용해야 합니다.



답변자 : Community Wiki


System.String 은 .NET 문자열 클래스입니다. C#에서 string System.String 의 별칭이므로 사용 시 동일합니다.

지침에 관해서는 너무 수렁에 빠지지 않고 원하는 대로 사용합니다. 인생에는 더 중요한 것이 있으며 코드는 어쨌든 동일할 것입니다.

Int16 , Int32 , UInt16 , UInt32 등을 사용하는 경향이 있는 시스템을 구축하는 String 을 사용하는 것이 더 자연스러워 보일 수 있습니다. .net 언어를 사용하면 상황을 더 이해하기 쉽게 만들 수 있습니다. 그렇지 않으면 string과 int를 사용합니다.



답변자 : Community Wiki


나는 형식화상의 이유로 (별칭보다) 대문자로 된 .NET .NET 유형은 다른 객체 유형과 동일한 색상으로 지정됩니다(값 유형은 결국 적절한 객체임).

조건 및 제어 키워드(예: if , switchreturn )는 소문자이고 진한 파란색으로 표시됩니다(기본값). 그리고 나는 오히려 사용과 형식에 이견이 없었으면 합니다.

고려하다:

 String someString; string anotherString;


답변자 : Community Wiki


stringString 은 모든 면에서 동일합니다(대문자 "S" 제외). 어느 쪽이든 성능에 미치는 영향은 없습니다.

구문 강조로 인해 대부분의 프로젝트에서 소문자 string



답변자 : Community Wiki


C#은 CLR과 함께 사용되는 언어입니다.

string 은 C#의 유형입니다.

System.String 은 CLR의 형식입니다.

C#을 CLR string System.String 매핑됩니다.

이론적으로 Java 바이트코드를 생성하는 C# 컴파일러를 구현할 수 있습니다. 이 컴파일러의 합리적인 구현은 아마도 Java 런타임 라이브러리와 상호 운용하기 위해 stringjava.lang.String



답변자 : Community Wiki


이 YouTube 비디오는 실제로 어떻게 다른지 보여줍니다.

그러나 이제 긴 텍스트 답변이 필요합니다.

.NET 에 대해 이야기할 때 하나는 .NET 프레임워크이고 다른 하나는 해당 프레임워크를 사용하는 C# , VB.NET

여기에 이미지 설명 입력

" System.String " 일명 "String"( 대문자 "S")은 .NET 프레임워크 데이터 유형이고 "string"은 C# 데이터 유형입니다.

여기에 이미지 설명 입력

간단히 말해서 "String"은 "string"의 별칭(다른 이름으로 호출되는 동일한 것)입니다. 따라서 기술적으로 아래 코드 문은 모두 동일한 출력을 제공합니다.

 String s = "I am String";

또는

 string s = "I am String";

같은 방식으로 아래와 같이 다른 C# 데이터 유형에 대한 별칭이 있습니다.

개체: System.Object , 문자열: System.String , bool: System.Boolean , byte: System.Byte , sbyte: System.SByte , short: System.Int16

이제 프로그래머의 관점에서 백만 달러짜리 질문 그럼 "문자열"과 "문자열"을 언제 사용해야 할까요?

혼란을 피하기 위해 가장 먼저 그 중 하나를 일관되게 사용하십시오. 그러나 변수 선언을 수행할 때 모범 사례 관점에서 "문자열"(작은 "s")을 사용하는 것이 좋으며 클래스 이름으로 사용할 때는 "문자열"(대문자 "S")이 선호됩니다.

아래 코드에서 왼쪽은 변수 선언이며 "문자열"을 사용하여 선언되었습니다. 오른쪽에서는 "String"이 더 합리적이므로 메서드를 호출하고 있습니다.

 string s = String.ToUpper() ;


답변자 : Community Wiki


소문자 string System.String 의 별칭입니다. 그것들은 C# 에서 동일합니다.

System.Int32 , System.String 등) 유형 또는 C# aliases ( int , string 등)을 사용해야 하는지 여부에 대한 논쟁이 있습니다. C# aliases 를 사용해야 한다고 생각하지만 이는 제 개인적인 취향일 뿐입니다.



답변자 : Community Wiki


string System.String 의 별칭일 뿐입니다. 컴파일러는 그것들을 동일하게 취급할 것입니다.

유일한 실질적인 차이점은 언급한 구문 강조 표시와 String 을 사용하는 경우 using System 을 사용하여 작성해야 한다는 것입니다.



답변자 : Community Wiki


둘 다 동일합니다. 그러나 코딩 지침의 관점에서 String string 을 사용하는 것이 좋습니다. 이것은 일반적으로 개발자가 사용하는 것입니다. 대신 사용의 예 Int32 우리가 사용하는 int 같은 int 에 별칭입니다 Int32

참고로 "키워드 문자열은 미리 정의된 System.String 클래스의 별칭일 뿐입니다." - C# 언어 사양 4.2.3 http://msdn2.microsoft.com/En-US/library/aa691153.aspx



답변자 : Community Wiki


다른 사람들이 말했듯이, 그들은 동일합니다. 기본적으로 StyleCop 규칙 String.Format , String.Join , String.Concat System.String 정적 함수를 string 을 C# 코드 스타일 모범 사례로 사용하도록 강제합니다.



답변자 : Community Wiki


6년 5개월 만의 새로운 답(지연).

string 은 항상 고정된 의미를 갖는 예약된 C# 키워드인 반면 String 은 무엇이든 참조할 수 있는 일반 식별자일 뿐입니다. 현재 유형의 멤버, 현재 네임스페이스 및 적용된 using 지시문 및 해당 배치에 따라 String global::System.String 다른 값 또는 유형이 될 수 있습니다.

어디 두 가지 예를 제공해야 using 도움이되지 않습니다 지시를.


첫째, String 이 현재 유형(또는 지역 변수) 의 값인 경우:

 class MySequence<TElement> { public IEnumerable<TElement> String { get; set; } void Example() { var test = String.Format("Hello {0}.", DateTime.Today.DayOfWeek); } }

IEnumerable<> Format 이라는 비정적 멤버가 없고 확장 메서드가 적용되지 않기 때문에 위의 내용은 컴파일되지 않습니다. 위의 경우 유형 이 구문상 유일한 가능성인 다른 컨텍스트에서 String 을 사용하는 것이 여전히 가능할 수 있습니다. 예를 들어 String local = "Hi mum!"; 괜찮을 수 있습니다(네임스페이스 및 using 지시문에 따라 다름).

더 나쁜 것은 String.Concat(someSequence) using 에 따라) Linq 확장 메서드 Enumerable.Concat 갈 것입니다. string.Concat 이동하지 않습니다.


둘째, String 이 다른 유형 인 경우 현재 유형 내부에 중첩됩니다.

 class MyPiano { protected class String { } void Example() { var test1 = String.Format("Hello {0}.", DateTime.Today.DayOfWeek); String test2 = "Goodbye"; } }

Example 메서드의 두 문은 모두 컴파일되지 않습니다. 여기서 String 은 항상 피아노 스트링MyPiano.String 입니다. 멤버( static 이든 아니든) Format 이 존재하지 않습니다(또는 기본 클래스에서 상속됨). "Goodbye" 라는 값은 변환할 수 없습니다.



답변자 : Community Wiki


시스템 유형을 사용하면 C#과 VB.Net 간에 쉽게 이식할 수 있습니다.



답변자 : Community Wiki


무슨 일이 다른 프로그래머들 사이 일반적인 관행 것 같다 반대, 내가 선호하는 String 을 통해 string 단지는 사실 강조, String 존 소총가 언급 한 바와 같이, 참조 형식입니다.



답변자 : Community Wiki


string System.String 의 별칭(또는 약칭)입니다. string 을 입력하면 System.String 을 의미합니다. think link에서 더 많은 것을 읽을 수 있습니다: 'string'은 System.String의 별칭/약자입니다.



답변자 : Community Wiki


Ritchers 책의 lfousts 답변에 이것을 추가하고 싶습니다.

C# 언어 사양에는 "스타일의 문제로 전체 시스템 유형 이름을 사용하는 것보다 키워드를 사용하는 것이 좋습니다."라고 명시되어 있습니다. 언어 사양에 동의하지 않습니다. 나는 FCL 유형 이름을 사용하고 기본 유형 이름을 완전히 피하는 것을 선호합니다. 사실, 컴파일러가 원시 유형 이름조차 제공하지 않고 개발자가 대신 FCL 유형 이름을 사용하도록 했으면 합니다. 내 이유는 다음과 같습니다.

  • 나는 그들의 코드에서 문자열이나 문자열을 사용할지 여부를 모르고 혼동 개발자의 수를 보았다. C# 문자열 (키워드)은 System.String (FCL 유형)에 정확히 매핑되기 때문에 차이가 없으며 둘 중 하나를 사용할 수 있습니다. 마찬가지로, 일부 개발자 는 응용 프로그램이 32비트 OS에서 실행될 때 int 가 32비트 정수를 나타내고 응용 프로그램이 64비트 OS에서 실행될 때 64비트 정수를 나타낸다고 말하는 것을 들었습니다. 이 문장은 절대 거짓입니다. C#에서 int는 항상 System.Int32에 매핑되므로 코드가 실행되는 OS에 관계없이 32비트 정수를 나타냅니다. 프로그래머가 코드에서 Int32 를 사용하면 이러한 잠재적인 혼란도 제거됩니다.

  • C#에서 longSystem.Int64 에 매핑되지만 다른 프로그래밍 언어에서는 long 이 Int16 또는 Int32 에 매핑될 수 있습니다. 사실, C++/CLI는 longInt32 로 취급합니다. 한 언어로 소스 코드를 읽는 사람이 다른 프로그래밍 언어로 프로그래밍하는 데 익숙하다면 코드의 의도를 쉽게 잘못 해석할 수 있습니다. 사실, 대부분의 언어는 long 을 키워드로 취급하지도 않고 그것을 사용하는 코드를 컴파일하지도 않습니다.

  • FCL에는 메서드 이름의 일부로 형식 이름이 있는 메서드가 많이 있습니다. 예를 들어 BinaryReader 형식은 ReadBoolean , ReadInt32 , ReadSingle 등과 같은 메서드를 제공하고 System.Convert 형식은 ToBoolean , ToInt32 , ToSingle 등과 같은 메서드를 제공합니다. 다음 코드를 작성하는 것은 합법적이지만 float 가 있는 행은 나에게 매우 부자연스럽고 그 행이 올바른지 명확하지 않습니다.

     BinaryReader br = new BinaryReader(...); float val = br.ReadSingle(); // OK, but feels unnatural Single val = br.ReadSingle(); // OK and feels good
  • C#만 사용하는 많은 프로그래머는 CLR에 대해 다른 프로그래밍 언어를 사용할 수 있다는 사실을 잊어버리는 경향이 있으며, 이 때문에 C#-ism이 클래스 라이브러리 코드에 침투합니다. 예를 들어, 마이크로 소프트의 FCL은 거의 독점적으로 C #으로 작성되고 FCL 팀의 개발자는 C처럼 (다른 언어로 C #뿐만 아닌 Int64 값을 반환의 'Array와 같은 라이브러리 등 GetLongLength,로 방법을 소개했다 ++ /CLI). 또 다른 예는 System.Linq.EnumerableLongCount 메서드입니다.

나는 완전한 단락을 읽기 전에 그의 의견을 이해하지 못했습니다.



답변자 : Community Wiki


String( System.String )은 기본 클래스 라이브러리의 클래스입니다. string(소문자)은 System.String의 별칭인 C#에서 예약된 작업입니다. Int32 대 int 는 Boolean vs. bool 과 유사한 상황입니다. 이러한 C# 언어별 키워드를 사용하면 C와 유사한 스타일로 기본 요소를 선언할 수 있습니다.



답변자 : Community Wiki


정말 관습의 문제입니다. string 은 C/C++ 스타일처럼 보입니다. 일반적인 규칙은 선택한 언어가 제공한 바로 가기를 사용하는 것입니다( Int32 int/Int). 이것은 "객체"와 decimal 에도 적용됩니다.

Int64 의미할 수 있는 미래의 64비트 표준으로 코드를 이식하는 데 도움이 될 수 있지만 그것이 요점이 아니며 어떤 업그레이드 마법사도 안전을 Int32 int 참조를 변경하기를 기대합니다.



답변자 : Community Wiki


String 은 키워드가 아니며 식별자로 사용할 수 있지만 string 은 키워드로 식별자로 사용할 수 없습니다. 그리고 기능적 관점에서 둘 다 동일합니다.



답변자 : Community Wiki


파티에 늦게 오는 경우: 저는 CLR 유형을 100% 사용합니다(C# 유형을 강제 로 사용하는 경우를 제외하고는 마지막 시간이 언제인지 기억나지 않습니다).

나는 원래 Ritchie의 CLR 책에 따라 몇 년 전에 이 일을 시작했습니다. 모든 CLR 언어는 궁극적으로 CLR 유형 집합을 지원할 수 있어야 하므로 CLR 유형을 직접 사용하면 더 명확하고 "재사용 가능한" 코드를 제공할 수 있습니다.

몇 년 동안 해왔기 때문에 습관이 되었고 VS가 CLR 유형에 대해 표시하는 색상이 마음에 듭니다.

유일한 단점은 자동 완성이 C# 유형을 사용한다는 것이므로 자동으로 생성된 유형을 다시 입력하여 대신 CLR 유형을 지정합니다.

또한 이제 "int" 또는 "string"을 볼 때 1970년대 C 코드를 보는 것처럼 정말 잘못되었습니다.



답변자 : Community Wiki


@JaredPar (C# 컴파일러의 개발자이자 많은 SO 사용자!)는 이 문제에 대한 훌륭한 블로그 게시물을 작성했습니다. 여기에서 공유할 가치가 있다고 생각합니다. 우리 주제에 대한 좋은 관점입니다.

stringString 은 스타일 논쟁이 아닙니다.

[...]

키워드 string 은 C#에서 구체적인 의미를 갖습니다. 핵심 런타임 어셈블리에 존재하는 System.String 유형입니다. 런타임은 본질적으로 이 형식을 이해하고 개발자가 .NET의 문자열에 대해 기대하는 기능을 제공합니다. 그 존재는 C#에서 매우 중요하므로 해당 유형이 존재하지 않으면 코드 라인을 구문 분석하기 전에 컴파일러가 종료됩니다. 따라서 string 은 C# 코드에서 정확하고 모호하지 않은 의미를 갖습니다.

식별자 String 은 C#에서 구체적인 의미가 없습니다. Widget , Student 등과 같은 모든 이름 조회 규칙을 통과하는 식별자입니다. string 완전히 다른 다른 어셈블리의 형식에 바인딩할 수 있습니다. String s = "hello" 와 같은 코드와 같은 방식으로 정의될 수 있습니다. 컴파일을 계속했다.

 class TricksterString { void Example() { String s = "Hello World"; // Okay but probably not what you expect. } } class String { public static implicit operator String(string s) => null; }

String 의 실제 의미는 항상 이름 확인에 따라 다릅니다. 즉, 프로젝트의 모든 소스 파일과 참조된 모든 어셈블리에 정의된 모든 형식에 의존합니다. 요컨대, 그것이 의미하는 바를 알기 위해서는 상당한 맥락이 필요합니다.

대부분의 경우 Stringstring 은 동일한 유형에 바인딩됩니다. 그러나 String 사용한다는 것은 개발자가 정답이 하나뿐인 곳에서 프로그램을 해석에 맡기는 것을 의미합니다. String 이 잘못된 유형에 바인딩되면 개발자는 몇 시간 동안 디버깅을 해야 하고 컴파일러 팀에 버그를 제출해야 하며 일반적으로 string 을 사용하여 절약할 수 있었던 시간을 낭비하게 됩니다.

차이점을 시각화하는 또 다른 방법은 이 샘플을 사용하는 것입니다.

 string s1 = 42; // Errors 100% of the time String s2 = 42; // Might error, might not, depends on the code

많은 사람들은 이것이 기술적으로 정확한 정보 String 사용하는 것은 여전히 괜찮다고 주장할 것입니다. 왜냐하면 코드베이스가 이 이름의 유형을 정의하는 경우가 극히 드물기 때문입니다. String 이 정의될 때 잘못된 코드베이스의 표시입니다.

[...]

String 은 리플렉션 헬퍼, 직렬화 라이브러리, 렉서, 프로토콜 등 여러 가지 완전히 유효한 목적으로 정의되어 있음을 알 수 있습니다. 이러한 라이브러리의 경우 Stringstring 은 코드가 사용되는 위치에 따라 실질적인 결과를 가져옵니다.

Stringstring 논쟁을 볼 때 이것은 스타일이 아니라 의미론에 관한 것임을 기억하십시오. 문자열을 선택하면 코드베이스에 명확한 의미가 부여됩니다. String 선택하는 것은 잘못된 것이 아니지만 미래에 놀라움을 위해 문을 열어두는 것입니다.

참고: 아카이브를 위해 대부분의 블로그 게시물을 복사/붙여넣기했습니다. 일부 내용을 무시하므로 가능하면 블로그 게시물을 건너 뛰고 읽는 것이 좋습니다.



답변자 : Community Wiki


다른 점이 없다.

C# 키워드 string 은 .NET 유형 System.String 매핑됩니다. 이는 언어의 명명 규칙을 유지하는 별칭입니다.

마찬가지로 int System.Int32 매핑됩니다.



답변자 : Community Wiki


Daniel Solis의 책 에서 이 문제에 대한 인용문이 있습니다.

미리 정의된 모든 유형은 기본 .NET 유형에 직접 매핑됩니다. C# 유형 이름(문자열)은 단순히 .NET 유형(String 또는 System.String)에 대한 별칭이므로 .NET 이름을 사용하는 것은 바람직하지 않지만 구문상으로는 잘 작동합니다. C# 프로그램 내에서 .NET 이름 대신 C# 이름을 사용해야 합니다.



답변자 : Community Wiki


boolBoolean 처럼 차이가 없습니다.



답변자 : Community Wiki


string 은 키워드이며 string을 식별자로 사용할 수 없습니다.

문자열 은 키워드가 아니며 식별자로 사용할 수 있습니다.

예시

 string String = "I am a string";

키워드 string System.String 의 별칭이며 둘은 정확히 동일합니다.

 typeof(string) == typeof(String) == typeof(System.String)


출처 : Here


출처 : http:www.stackoverflow.com/questions/7074/what-is-the-difference-between-string-and-string-in-c">

반응형