先頭が大文字のStringと小文字のstring。
いろいろなサンプルソースを眺めていると、文字列型としてStringを使っている人とstringを使う人がいる事に気付きます。C#は大文字と小文字を区別して扱うはずなのになにが違うのでしょう?
違いはありません。”全く同じもの”です。
先頭が大文字のString
先頭が大文字の String は正確には System.String です。
ソース内で単に String と書かれている場合はきっと using System; が宣言されているはずです。
System.String を詳しく見ていくと以下のようなクラスとして定義されている事が分かります。
namespace System { public sealed class String : IComparable, ICloneable, IConvertible, IComparable<String>, IEnumerable<char>, IEnumerable, IEquatable<String> { public static readonly String Empty; public String(char[] value); public String(sbyte* value); public String(char* value); public String(char c, int count); public String(char[] value, int startIndex, int length); public String(sbyte* value, int startIndex, int length); public String(char* value, int startIndex, int length); public String(sbyte* value, int startIndex, int length, Encoding enc); public char this[int index] { get; } public int Length { get; } : : 以下省略
先頭が小文字のstring
先頭が小文字の string は予約語(キーワード)として予め定義されている識別子です。
Visual Studio などを使っている場合、stringと書くと色が変わりますよね。
このstringキーワードは「System.String のエイリアス(別名)」なのです。
コンパイルすれば String も string も全く同じものになります。
他にもあるエイリアス
stringと同様にエイリアスをキーワードに定義しているものがいくつかあります。
bool は System.Boolean と同じものです。
sbyte は System.SByte と同じものです。
byte は System.Byte と同じものです。
short は System.Int16 と同じものです。
ushort は System.UInt16 と同じものです。
int は System.Int32 と同じものです。
uint は System.UInt32 と同じものです。
long は System.Int64 と同じものです。
ulong は System.UInt64 と同じものです。
char は System.Char と同じものです。
float は System.Single と同じものです。
double は System.Double と同じものです。
decimal は System.Decimal と同じものです。
object は System.Object と同じものです。
組み込み型などを便利に書けるようキーワードに定義してくれているのですね。
関連記事
- C#の値型と参照型の違い
- C#のコンストラクタでオーバーロード
- C#のコンストラクタの継承
- C#のジェネリックを使おう
- C#のデリゲート (delegate) って何?
- C#のデリゲートお手軽にする匿名メソッド
- C#のラムダ式【=>】って何?
- C#で基底クラスのメソッドを置き換えるオーバーライド
- C#でキャストとas演算子を使いこなす
- C#で型を判別するtypeofとis演算子
- C#の値型でもnullを扱えるようにするNullable
- C#のリソース解放にはIDisposableとusingを使おう
- C#のStringとstring、Int32とint 違いは・・・ない!
- C#でasync/awaitを使った非同期処理
- C#で文字列を指定の区切り文字で分割
- C#のstring.Formatで桁数や書式を指定する
- C#の配列やListをソートする
- C#の配列やListを検索する (Find,FindAll,FindIndex)
- C#の配列やListを高速に検索する (BinarySearch)
- C#の配列の中に指定の要素が存在するかを調べる(LINQ Contains)
- C#の配列の中に条件を満たす要素が存在するかを調べる(LINQ Any)
- C#の配列から条件に合う要素を抽出する(LINQ Where)
- C#の配列で要素毎の処理結果を得る(LINQ Select)
- C#の配列を並び替える(LINQ OrderBy,ThenBy)
- C#の配列をグループ毎に処理する(LINQ GroupBy)
- C#の配列を内部結合(INNER JOIN)する(LINQ Join)
- C#の配列から最初の要素を取り出す(LINQ First,FirstOrDefault)
- C#の配列の重複要素を削除する(LINQ Distinct)
- C#でフォルダ内のファイル名一覧を取得する
- C#でテキストファイルを読み込む
- C#でテキストファイルに書き込む
- C#でバイナリファイルを読み込む
- C#でバイナリファイルに書き込む
コメントをお書きください