2012年11月22日木曜日

[C#] 文字列まわりの基本

[共通] 当 Blog の投稿に関する基本事項について
→ http://fuunyan.blogspot.jp/2012/09/blog.html


2016/03/18 ⇒ 追記

今更ながらに文字列まわりの基本をいくつか確認したのでメモしておく。

●シングルクォーテーション、ダブルクォーテーション
シングルが文字でダブルが文字列。
・・・ホント今更。
これだけだと、ちょっとおバカさんなので他にも。

文字コード指定は\uXXXXで指定。
文字列の場合「逐語的文字列リテラル」というのがあってエスケープシーケンスを無視させる書式がある。
シングルやダブルの前に @ をつければいい。
string str = @"aaa\nbbb\nccc";
Console.Write(str);
@ を使わない場合
aaa
bbb
ccc
と表示されるが @ があると
aaa\nbbb\nccc
と表示される。
ちなみに複数行にわたっての記述に対応していて
string str = @"この下の行も文字列扱いになる。
string str = ""ここも文字列扱い"";
ここまで文字列";
Console.WriteLine(str);
これを実行すると 3 行にわたり文書が表示される。
対象になる行の改行、スペースもそのまま表示されるのでコード上ではインデントで空白を入れたくてもいれられないので注意(入れちゃうとその分しっかりと空白が表示されます)


●文字列が null かどうか情報参照元
いろいろ手段がある。
string str = "ほげほげ";
if(str == "") Console.write("空白です");
if(str == string.Enpry) Console.write("空白です");
if(str.Equals("")) Console.write("空白です");
if(str.Equals(string.Enpry)) Console.write("空白です");
if(string.IsNullOrEmpty(str)) Console.write("空白です");
if(str.Length == 0 ) Console.write("空白です");
どれで判断しても結果として空白かどうかの判断ができる。
対象が空白の場合に、ただ空白か否かの判定をする場合は str.Length == 0, String.Equals, == "" の順が早いようです(詳しくは情報参照元やMSDNにて)
ただ普段使いとしては IsNullOrEmpty がいいようです(MS的に推奨されているとのこと)

余談だが調べている時にnull合体演算子というものがあるのを知った。
string str = null;
str = str ?? "nullです";
?? の左辺が null でないなら左辺値を null であるなら右辺値を返すらしい(詳しくはMSDNを参照のこと)
使い方次第ではすっきりしたコードを書くことができそう。


●デバッグ時のログ出力
デバッグ中とかにブレークするほどではないけど値を確認したい場合に出力画面に結果を表示する方法。
System.Diagnostics.Trace.WriteLine("");


●デバッグ時の時間計測
動作時間を計測したい場合はStopwatchを利用すると便利。
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
sw.Stop();
sw.Restart();
sw.Reset();


以上、確認事項メモでした。

0 件のコメント:

コメントを投稿