Stringとstring

研究室で先輩が遺したコードをいじっていると、文字列型をStringと定義しているのによく出くわす。

C#は大文字小文字を区別する言語ですが、文字列型は、stringとも、Stringとも定義できます。まぁ、一般的には先頭が小文字のstringを使うかと思います。

私の研究室でStringがよく使われているのは、歴史的経緯に依るものですね。昔は、Javaが使われていたのです。Javaでは文字列型はStringなので、C#でもStringと書ける以上、みんなStringと書いてきた。

では、stringとStringは、何が違うのでしょう。他にもC#では、intをInt32と書けたり、doubleをDoubleと書けたりします。Cでは、intと定義すると、その変数のサイズはコンパイラ依存となります。でも、別にC#ではそんなことはありません。int型は、常に、32bitです

実はintとInt32は、全く同一です。具体的には、intは、Int32(正確に書けばSystem.Int32)のエイリアスです。コンパイルすると、どちらで書いても全く同じコンパイル結果となるのです。

これは単純に、C#が、組み込み型については、省略形をキーワード(予約語)として提供してくれているからです。
.NET Frameworkでは、組み込み型であっても、なるべく他の型と同じに見えるよう定義されています。StringやDoubleも(using System;がされていればそう書けますが)、正しくは名前空間が付いて、System.StringだったりSystem.Doubleだったりします。いちいち書くのは長い
そこでC#では、これらを短く、stringやdoubleと書けるようにしました。(System.stringとは書けません。)

組み込み型は、基本、頻繁に使うしね。それにintとかlongとか書ければ、他のプログラミング言語から移り住んで来た人もすぐに型を見つけられるし。

ということで私は、こいつJava使いだな…!とか思いながら、日々コードを直すのである。おしまい。


コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>