- PR -

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

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

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

Stringは名前空間Systemで定義されているClassで、
stringは定義しなくても使える基本的な関数?みたいな?w
intの定義を見るとInt32に行きますし、


いいですね。ほぼ理解できたと思います。(関数ではないですが)

#じゃんぬねっとさんのご説明とリンク先がとてもわかりやすいですね。

引用:

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

ただ、それを見ると頭が痛くなって過呼吸になるのですが……orz


危険ですね・・・w
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-14 11:35
ILDasmの使い方がよくわからなかったのですが、
Stringはstringの機能拡張タイプ、と考えればよいのでしょうか?
intはInt32と同じ扱いを受けるけど、派生としてInt16やInt64がある、
ってかんじなのでしょうか?

そうだと仮定すると、
「stringでもある程度同じことはできるけど、
せっかくVS2005使ってるなら"String"の方がいいよ」
ってのが答えですか?

_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-09-14 11:36
ここをみると、stringはStringのエイリアスだと書いてあります。
エイリアスというのは他でもよく出てくる言葉ですが「別名」の意味だと思えばいいです。

Int系も。
コード:
int i1 = int.MaxValue;
int i2 = Int32.MaxValue;
int i3 = System.Int32.MaxValue;

short s1 = short.MaxValue;
short s2 = Int16.MaxValue;
short s3 = System.Int16.MaxValue;

long l1 = long.MaxValue;
long l2 = Int64.MaxValue;
long l3 = System.Int64.MaxValue;

まりも
ベテラン
会議室デビュー日: 2006/08/19
投稿数: 77
投稿日時: 2006-09-14 12:15
String と stringは、全く同じものです。

というか。実際に.NET Frameworkに存在するのは、Stringというクラスだけです。
Stringだけあれば、本当は問題ないのです。
intとかも同じで、本当に存在するのはInt32のほうです。

ただ、StringとかInt32とか書いているとなんとなく見にくいので、ということで、
C#のプログラム中にstring とか int とか書いておくと、
自動的にStringとかInt32とかに、読み替えてくれるという決まりになっているのです。

だから。読み替えているだけなので。機能的には当然全く同じです。

同じように用意された読み替え用の単語としては、
string,bool,sbyte,byte,short,int,long,ushort,uint,ulong,decimal,float,doubleなんかがあります。

私としては、わざわざ読みやすいように、と用意してくれているのだから、そっちのほうが読みやすいということなのだろう、と思うので、極力stringとかの方を使うようにしています。
公式にどっちが推奨、とか言う話はあるのかな?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-14 12:32
引用:

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

ILDasmの使い方がよくわからなかったのですが、
Stringはstringの機能拡張タイプ、と考えればよいのでしょうか?


ごめんなさい、私の説明では伝わりにくかったかもしれませんね。

引用:

私の書き込みより :

言語ごとに基本型への別名が用意されているようなイメージをしてください。


「別名」 だと書いています。
ですから、機能拡張ではありません。

引用:

私の書き込みより :

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


ここでも、'全く' 同じと書いています。
ですから、機能拡張ではありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-14 13:09
みなさんご回答ありがとうございます。
なるほど、エイリアスなんですね。
Linuxでシンボリックリンクの色が違うのと似たようなものなんですね……。

基礎ができていない私に最後までお付き合いいただきありがとうございました。

_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-09-14 13:11
引用:

まりもさんの書き込み (2006-09-14 12:15) より:

うが読みやすいということなのだろう、と思うので、極力stringとかの方を使うようにしています。
公式にどっちが推奨、とか言う話はあるのかな?


どちらも見かけるんですよね。
僕も型名の方を使うようにしてますが。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-14 13:22
引用:

まりもさんの書き込み (2006-09-14 12:15) より:

私としては、わざわざ読みやすいように、と用意してくれているのだから、そっちのほうが読みやすいということなのだろう、と思うので、極力stringとかの方を使うようにしています。


私も言語側で用意されたデータ型を使用しております。
(何となく、文字が青くなることを優先しているみたいです)

MSDN2 ライブラリの (使用法) に関するコードも、言語側で用意されたデータ型を使用しています。

しかし、Visual Studio からイベント プロシージャを生成した場合、
イベント引数 sender は System.Object になるんですよね。
(VB でコード上部にある ComboBox から生成した場合は Object になりますが)

統一さえされていれば、良いと思います。
とか言いつつ、VB の Date 型は、System.DateTime の方を使っています...

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

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