投稿者 tel | 2018年10月7日

C#での文字列と数字の連結

C#で文字列と数値を連結するときに数値をToStringしなくても連結できる。

string a = "a" + 1.ToString();
Console.WriteLine(a);    // a1
string a = "a" + 1;
Console.WriteLine(a);    // a1

文字列同士の連結は string.Concat(string, string) が呼び出されるが、文字列と数値を連結するときは string.Concat(object, object) が呼び出されている。

もちろん string.Concat(object, object) を呼び出した場合、boxingがされるので文字列同士の連結をしたほうがいい。普通は文字列に数値を連結する場合に直接連結することはないのでいいのだけど、以下のコードのようにパースしたあとに加算しようと思ってたのに先に加算したことで文字列連結になってしまってバグるということがあった。

string a = "10";
int b = int.Parse(a + 1);

ほんとは以下のように書きたかった。

string a = "10";
int b = int.Parse(a) + 1;

文字列同士の加算じゃない場合は、コンパイラエラーになってくれるといいのに。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。