str += $"(文字列) = {x}";
保守で、機能修正を行う必要があって、修正をしていたところ、こんな書き方をしているプログラムがありまして・・・
なんだこりゃ???
となった訳です。
だって、初めて見たし・・・
別の会社の人のプログラムだった
うちの会社では、全PGを内製は出来ない状態になっているので、開発を専門でやっている会社にお願いをすることが良くあります。
今回の記述箇所も、その別会社の人の修正部分でした。
自社の人のソースを見る限り、こんな書き方をしている(出来る)人はいないので、「お?」と思った次第。
知らないままじゃ、修正も怖くて出来ないので調べました。
文字列挿入ができる
何が出来るかっていうと、これで文字列の挿入が出来るんですよ。
お手軽です。
VBだと普通に
str = str & x;
なんて書けたりするんですが、C言語だとそうはいかない。
C#もVer2015だと
str += "(文字列) = " + x;
なんて書けるので、有り難味は分かりづらいんですけどね。
その昔の書き方
昔と言うのもなんですが、C/C++時代(今も現役で使用されてるので時代というのもなんですが・・・)の記法だとこうなります。
C#
outputString = "With redefined new line characters:"; Console.WriteLine(outputString);
C/C++
outputString = "With redefined new line characters:"; Console.WriteLine("%s",outputString);
同じコマンドラインに出力するだけでも、一々、表示したい箇所と順番を守って「%s(数字なら%dとか)」を並べ、「,」以降に順番どおりに変数を指定する必要があるんですよ。
平気で10個以上並べる人もいるので、修正対象としてプログラムのソースを渡された時に、ため息しか出なかった事もありましたw
そういう意味では、.NET以降?は書きやすくなったと思うなぁ。
どちらも知っているほうがいいけれど・・・
どちらの記法も対応出来るに越したことはありません。
だけど、ロジック考えたり仕様を作るのに記法ありきでやることはない。
正直、そんなに記法ばかり覚えても意味は少ないと思うので、出てきた時に調べて使えればいいかな。
「format」はどこへ行ったんだよ
string.formatとの違いを書くのが最初の目的だったw
//xが変数 str += $"(文字列) = {x}"; //xが変数で{0}の部分に挿入される str += string.format("(文字列) = {0}" , x);
これが、それぞれの書き方になります。
C/C++の書き方として紹介したみたいに、変数の分だけ「{0}{1}{2}…」と並べて、その後で「x,y,z…」と変数を指定する必要があったんですよ。
「$」を使うと、非常に手間が減るので使おう。
まぁ、C# 2015では使わなくていいかもだけどねw