この記事の目的
この記事では、
[string]と[String]の違いをまとめること
を目的としています。
本題
★夏休み課題
- Repositoryパターン関連
- Repositoryパターンの使い方
- Linqを使ったデータの操作
- Where
- Lazy クラスの使い方
- Unity
-- HelloWorld
-
- UI作成
- 画面遷移
- あといろいろ
- NEW qiita記事の移行←【ここ】
★きっかけ
Daily Dotnet Tipsの記事で、C#のstring とStringについて書かれたものを見たので、自分なりにまとめてみました。
Back to Basics – string Vs. String in C# - Daily .NET Tips
自分のよりどころ(c#の師匠)としているのは、プログラミング.NET Frameworkという本です。
プログラミング.NET Framework 第4版 (Microsoft Press)
- 作者: Jeffrey Richter,藤原雄介
- 出版社/メーカー: 日経BP社
- 発売日: 2013/10/10
- メディア: 単行本
- この商品を含むブログ (9件) を見る
★師匠からの教え
師匠は、以下のようにstringとStringの違いについて言及しています。
筆者は 、コ ードで s t r i n gと S t r i n gのどちらを使用すべきなのかがわからずに混乱している開発者を何人も見てきました 。 C #の s t r i n g (キ ーワ ード )はそのまま S y s t e m . S t r i n g ( F C Lの型 )に対応するので 、これらの間に違いはなく 、どちらも使用できます 。
混乱している開発者・・・自分もその開発者の一人ですw
C#の言語仕様としては、FCLの型名を利用するのではなくキーワードを利用する実装が推奨されているそうです。ただ、C#のキーワードで定義されてる型と、ほかのプログラミング言語で定義されている型で違いがある場合があります。例えば、C#のキーワードでlongとなっているものは、FCLではint64ですが、C++/CLIではint32として扱われるなどがあります。これらの理由から、キーワードではなくFCLの型名でかく方が良いという見解もあります。
結局のところ、型名とキーワードで内部的な処理が違っているわけでもないので、実装されたコードを見たとき、違和感なく、そして誤解なく読み取ることができる方を選択すれば良いと思いました。
★型名とキーワードの違い(見た目編)
水色がFCLの型名、濃い青がキーワードとなります。
★型名とキーワードの違い(現実編)
せっかくなので、実際のソリューションではどのように使われているのか簡単に調べてみました。
以下はlog4netの実装の一部です。
一部を切り取ったので、すべてが上記のようになっているわけではありません。
ただ、このように混在している実装もあるため、この問題は本当にどっちでも良いということが見て取れます。
まとめ
Stringとstringはほぼ同じ。
その違いは、FCLの型名か、キーワードであること。
公式では、キーワードが推奨されている。
FCLの色はみずいろであるため、若干見にくい。
見にくい人は、キーワードにして色を濃くしたら良いと思います。
※特にXMLドキュメントを書くときは、濃いほうが色がわかりやすい。
という例↓