- PR -

Stringとstringの差(大文字と小文字)はありますか?

投稿者投稿内容
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-14 09:28
お世話になります。

現在、VS2005のC#でプログラミングしていますが、ここで変数の定義時に、次のような書き方ができることがわかりました。

String strTest = string.Empty; /*1*/
String strTest = String.Empty; /*2*/

これの1と2の違いは、.Emptyの直前のStringの先頭の1文字目が大文字か小文字かということだけです。VS上では、1のstringは濃い青で表示されますが、2のStringは水色で表示されています。

そこで質問なのですが、この2つに何か違いや意味はあるのでしょうか?普段使うのにどちらが良いということはあるのでしょうか?

ご回答よろしくお願いいたします。


R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-09-14 09:37
引用:

Wingardさんの書き込み (2006-09-14 09:28) より:

String strTest = string.Empty; /*1*/
String strTest = String.Empty; /*2*/

これの1と2の違いは、.Emptyの直前のStringの先頭の1文字目が大文字か小文字かということだけです。VS上では、1のstringは濃い青で表示されますが、2のStringは水色で表示されています。


先頭の1文字目が大文字か文字時の違いのみですって?
とんでもないですw

濃い青と水色の表記が何を表しているかを考えて見ると良いですよ。
ご自身で作ったクラスも水色になっていることに気つかれたと思います。

同様に濃い青で表記されるものは何でしょうか?

#謎かけモードw
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-14 09:49
リファレンスに書いてあります。
ヒント : System.String

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-14 09:53
おお、やはり違うのですか……

色々な凡例見てると、大文字の方が多いみたいなので、なんとなくそちらの方を使うようにはしているのですが……。でもint型にはIntという関数はないですし、逆にDatetime型にはdatetimeという関数はないですし……。

リファレンス読んで、バカなりに少し考えて見ます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-14 10:12
引用:

Wingardさんの書き込み (2006-09-14 09:53) より:

おお、やはり違うのですか……


「違う」 という結論が違います。

答えを見つけるまでの手順 :
  1. コード ファイル先頭の 'using System;' を削除して 'String' で変数を宣言するとどうなりますか?
    それは、なぜそうなると思いますか?
  2. 'string' と書いて、右クリック メニューから [定義へ移動] でメタデータを参照。
    さて、どこのクラスに行き着きましたか?
IDE でもいろいろ調べることが可能ですので、活用されると自己解決できることも多くなると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-09-14 10:35
引用:

Wingardさんの書き込み (2006-09-14 09:53) より:

リファレンス読んで、バカなりに少し考えて見ます。


折角良いところに気づいたのですから、ご自身で解に辿りつかないと勿体無いのです。
気づきもしない人だっているんですから、自信を持って下さい。

#int にも Int32 とか Int16とかありますよ。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-14 10:39
中間報告です(´・ω・)

Stringは名前空間Systemで定義されているClassで、
stringは定義しなくても使える基本的な関数?みたいな?w
intの定義を見るとInt32に行きますし、
CとC#の違いのようなものなのでしょうか……。
頭の悪さが随所でにじみ出てきてしまいます。

「定義へ移動」というものがあるのは知りませんでした。
ただ、それを見ると頭が痛くなって過呼吸になるのですが……orz

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-14 10:47
引用:

Wingardさんの書き込み (2006-09-14 10:39) より:

Stringは名前空間Systemで定義されているClassで、
stringは定義しなくても使える基本的な関数?みたいな?w


いい線ですが、さすがに 「関数」 ではないですね。
リファレンスを見れば解決すると思います。

  .NET Framework クラス ライブラリの概要

引用:

CとC#の違いのようなものなのでしょうか……。


これはちょっと違います。

言語ごとに基本型への別名が用意されているようなイメージをしてください。
たとえば、C# の int は、VB では Integer で、NCL では System.Int32 です。

信じられないのであれば、ildasm を使って実際に IL を見てみると良いです。
C#:string、VB:String、NCL:System.String ともに、全く同じ IL になると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)