C# stringとSystem.Stringの違い

このQ&Aのポイント
  • C#のstringとSystem.Stringは同じ意味です。
  • stringはC#のネイティブなデータタイプであり、System.Stringは.NETライブラリのタイプの別名です。
  • どちらを使っても同じ結果が得られるため、使い分ける必要はありません。
回答を見る
  • ベストアンサー

C# stringとSystem.String違い

C#のstringとSystem.Stringこの2つの違いが分かりません。 どのような時に使い分けをすれば良いのでしょうか。 そもそも別のものなのでしょうか? > stringは、C#のネイティブなデータタイプです。ただし、すべての基本タイプと同様に、stringは、実際には.NETライブラリのタイプの別名です。この場合はSystem.Stringです。 > http://www15.ocn.ne.jp/~sunsan-k/sunsank.files/sunsan/d-net/Csharp_index/Chap2/C2-19.html ここに書いている意味はstringとSystem.Stringは同じという意味なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

string と System.String は型として使われる限り単なる別名なので同じものです。 foo.System.String みたいなものが用意されて foo 名前空間内から使うような場合は異なりますが,特殊例過ぎるのでこれは考えないものとします。 コンパイラは,ソース上の型として string と書かれているものは,System.String とかかれているものとして処理します。 # 正確には "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" という型 (.NET 4 の場合) これは,SDK 付属の逆アセンブラでコードを見ると,string を使っても System.String を使っても同じコードになることから確認できます。 同じように,int は System.Int32 の別名ですし,bool は System.Boolean の別名です。 使い分けは,特別決まりはありません。 唯一,メソッド名等に使う場合には言語固有の名称を避ける (CLR の名前を使う),というのはあります。 MSDN: 一般的な名前付け規則 http://msdn.microsoft.com/ja-jp/library/ms229045.aspx 具体的には, ・ToInt よりも, ・ToInt32 の方が好ましい,ということです。 # 上側の名前付け規則だと,Visual Basic においては ToInteger であるべき,となる。 私は,static メソッドの呼び出しに使う場合は CLR の名前を使い,それ以外では言語固有の名称を使っています。 書籍によっては,常に CLR の名前を使うべき,という物もあったりします。 # が, for (Int32 i = 0; ……みたいなコードはほとんど見ません。 自分なりの物でいいので,統一したルールを用意しておくのがよいでしょう。 # 常に言語固有の名称でもよいと思います。

devman
質問者

お礼

intやboolもでしたか。 非常に詳しく記述していただきありがとうございました。 知識を深めることが出来ました。 個人的なことですが、 既にstringに慣れてしまってるので、 Stringは使わずstringで統一したいと思います。

その他の回答 (1)

回答No.1

同じです。

devman
質問者

お礼

同じでしたか! すっきりしました>< ありがとうございます

関連するQ&A

  • System.String.Splitでエラー

    下記のようなSystem.String.Splitメソッドを使ったプログラムでエラーが出たのですが、解決方法がわかりません。 2番目の引数なしでも実行はできるのですが、分割した文字列が空の場合は省きたいので2番目の引数は省略したくありません。 なにか気づく方がいましたら、お教えください。 Visual C++ 2010を使っています。 他に環境についてなど補足が必要なことがありましたら言ってください。 using namespace System; int main(){ String^ s = "単語1 単語2 単語3 "; array<String^>^ result = s->Split(' ', StringSplitOptions::RemoveEmptyEntries); } error C2664: 'cli::array<Type> ^System::String::Split(...cli::array<wchar_t,dimension> ^)' : 2 番目の引数を 'System::StringSplitOptions' から 'wchar_t' に変換できません。(新しい機能 ; ヘルプを参照)

  • ASP.NET 使用言語C# 初心者向け解説サイト

    お世話になっております。 C#を使ってWebアプリケーションを開発することになりました。 使用ソフトは.NET2003です。 既存のシステムは無く、まっさらな状態から作ります。 書籍を何冊か渡されたのですが、どれもマニュアル的なもので実際にどういう手順で作成すればページが出来るのかがいまいちわかりません。 習うより慣れろ、といった感じで簡単なページの作成のサンプルコードなどが載っているサイトを教えていただけないでしょうか。 色々検索したのですが、ASP.NETだけど言語がVBで解説してあるページや、C#を使ってるけれど、WebではなくWindowsアプリの作成の解説がしてあるページしかみつけられませんでした。 とりあえず、@ITさんの http://www.atmarkit.co.jp/fdotnet/easyvs/index/index.htmlの全部 と http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.htmlの3章まで を実際に作ってみました。 知識は1年間ASPでの開発に関わったことがあるのと、C言語は分かります(が、CとC#は全然違いますね)。 C#でのWebアプリ開発の入門にぴったりのサイトをご存知でしたら教えてください。 よろしくお願いいたします。

  • C言語でこんなエラー出て立ち止まってます。

    --------------------------- kadai12x.exe - DLL が見つかりません --------------------------- ダイナミック リンク ライブラリ COMMON.dll が指定されたパス H:\プログラミングスクールDATA\コピー ~ 元CC-Master\kadai12x\Debug;.;C:\WINNT\system32;C:\WINNT\system;C:\WINNT;F:\orant\bin;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;F:\MSSQL7\BINN;F:\DDK\bin;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\Support Tools\;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\ に見つかりませんでした。 --------------------------- OK --------------------------- 誰か丁寧にわかりやすく教えてください。

  • string...?

    String filename; Image image; /*入力画像ファイルの名前の取得*/ BufferedReader d = new BufferedReader(new InputStreamReader(System.in)); while(true){ System.out.println("Type image file name."); filename = d.readLine(); File file = new File(filename); if(file.exists() == true){ break; }else{ System.out.println("File not found.\n"); } } /*画像の取り込み*/ Toolkit tk = Toolkit.getDefaultToolkit(); image = tk.getImage(filename); . . . という画像の名前を入力してそれがあれば読み込むというプログラムです(激省略)。 コンパイルはできたのですが、実行して名前をいれるとエラーが起きます。 Warning: Cannot convert string "-ryobi-minchol-medium-r-normal--*-140-*-*-c-*-jisx0208.1983-0" to type FontStruct とこんなのが。 解決策をお願いします。 一応環境をいっておくと turbolinux7 bashで実行です。

    • ベストアンサー
    • Java
  • solveとresolveの違い(解決するの意味において)

    いつもお世話になっています。 solveとresolveの違いですが、 解決するで、solve=resolveとシステム英単語にはありました。 reがついた単語がわざわざ生き残っているだけあって それなりの使い分けがあると思うのですがネイティブは どのように分けているのでしょうか? resolveには他の意味がある事もジーニアスで調べましたが 解決するの意味においてどのような使い分けがあるのか? resolveの他の意味との解釈上の繋がりなどがもしあれば それも合わせてご教授ください。 よろしくお願いいたします。

  • DLL・・・困っています。至急お願いします。

    パソコンの電源を入れると以下のように表示され先に進めずネットが出来ません。どうしてこのようになり、またどのようにしたら直るのか、パソコンに詳しくないので分かりやすい用語で説明し頂けると助かります。よろしくお願いいたします。 dlimport.exe-DLLが見つかりません ダイナミック リンク ライブラリ MSDART.DLLが指定されたパス C:\Program Files\Common Files\System\OleDB;.;C\WINNT\system32;C:\WINNT\system;C:\PROGRA~1\JURTY~1\JSLIB32;C:\WINNT\system32;C:\WINNT\System32\Wbem;C:\Program Files\Common Files\Autodesk Shared\;C:\Prgram Files\Quick Time\QTSystem\に見つかりませんでした。 回答ありがとうございます。詳細ですが上記のように出ます。 参考URLも拝見しましたが、パソコンに疎いのでできればわかりやすい用語で再度回答頂ければと思います。 よろしくお願いいたします。

  • C#を勉強していて、指定したフォルダから画像を読み込んでピクチャボック

    C#を勉強していて、指定したフォルダから画像を読み込んでピクチャボックスに次々と表示するスライドショーを作っています。 それで次のように作りました。 string[] files = System.IO.Directory.GetFiles(@"c:\test\", "*.jpg");  foreach (string file in files)  {   pictureBox1.Image = Bitmap.FromFile(file);   this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; Thread.Sleep(1000);  } しかしこれではフォルダの最後の画像しか表示されません。 この場合次々と画像を表示するにはどうしたらいいか教えてください。

  • C:\WINDOWS\SYSTEM\ctrlpan.dll

    ネットサーフィンでいらないウイルスまでいただいてしまいました>< 再起動のたびに『C:\WINDOWS\SYSTEM\ctrlpan.dll を読み込み中にエラーが発生しました。 >ダイナミック リンク ライブラリ(DLL)初期化ルーチンが失敗しました。』 とでてしまいます。 http://www.trendmicro.co.jp/vinfo/virusencyclo/default5.asp?VName=TROJ_SMALL.DB&VSect=T を試みたのですがうまくいきませんでした。 どのようにたいしょしたらよいでしょうか? よろしくおねがいしますm(__)m OS win98   FM-V です。

  • [CLR]webBrowser->Navigateについて

    あるサイトのログインを実装するために次のコードを書きました。 public: void postdata(){ Uri^ siteUri = gcnew Uri( "http://www.hogehoge.net/index.php" ); array <String^,1>^strData = gcnew array <String^,1 > ( 128 ); String^strHeader; strData[0] = "id=hoge&pass=hogehoge"; strHeader = "Content-Type: application/x-www-form-urlencoded"; this->webBrowser1->Navigate(siteUri,"",strData,strHeader); } しかしコンパイルすると error C2664: 'void System::Windows::Forms::WebBrowser::Navigate(System::Uri ^,System::String ^,cli::array<Type,dimension> ^,System::String ^)' : 3 番目の引数を 'cli::array<Type,dimension> ^' から 'cli::array<Type,dimension> ^' に変換できません。 となります。一見通りそうなのですが・・・。 配列あたりが怪しそうなのですがどうも納得出来ません。 ご教授願えるとありがたいです。

  • エラーメッセージ

    「ダイナミックライブラリgdiplus.dllが指定されたパスC\Program Files\Open\InternetExplorer;;C\WINNT\system32;C;WINNT;C\WINNT\System32\Wbemに見つかりませんでした。 というメッセージが出ます。どうすればいいですか?

専門家に質問してみよう