1. ホーム
  2. c#

Stringはプリミティブ型ですか?

2023-11-13 18:52:27

質問

文字列型とプリミティブ型について知りたいのですが。以下のような記事 この のような記事では、文字列はプリミティブ型であると書かれています。しかし 第二条 にはプリミティブ型として文字列は挙げられていません。

しかし、2番目の記事で提供されているコードを実行すると、次のように表示されます。 String is not Primitive type(文字列はプリミティブ型ではありません。 .

誰かこのことについて私を導くことができますか?

どのように解決するのですか?

どちらの記事でも、文字列は ではない であり、プリミティブな型であると述べています。それはそうではありません。

2番目の記事にあるサンプルコードをコンパイルして実行すると、次のように表示されます。

stringはプリミティブ型ではありません。

新しい文字列を作成する構文が、値型を作成するのと似ていることが混乱の元になっていると思います。

値型を定義するとき、これらはすべて同じです (とにかく 32 ビットシステムで)。

System.Int32 a = new System.Int32(5);
System.Int32 a = 5;
int a = 5;

参照型の文字列を作成するときは、これらと同じように

System.String s = new System.String(new char[]{'h', 'e', 'l', 'l', 'o'});
System.String s = "hello";
string s = "hello";

また、文字列が参照型であっても、値で比較することができます。

s == "hello";//true

これでもまだstringはプリミティブ型ではありません。

これに対する回答として認められているのは 質問 は、その詳細を教えてくれるはずです。