ついに.net7.0が正式リリース。C#11も正式にサポートされるようになった。
.net7.0+C#11には色々な機能追加があるが、私が1番よく使うであろう物は「生文字リテラル」かな。MSのサイトでは「未加工の文字リテラル」と翻訳されているが、要は文字列中に「”」や「{」等をエスケープ文字無しで書ける構文だ。
以下のような感じで文字列を定義できる。
string jsonstr = """
[
{"Name": "T.Sumomo", "Email": "t.sumomo@momo.com"},
{"Name": "J.Sumomo", "Email": "j.sumomo@momo.com"},
{"Name": "S.Sumomo", "Email": "s.sumomo@momo.com"}
]
""";
文字列補間も可能で、以下のような感じ
int x = 100;
int y = 200;
string replstr = $$"""
{ "X" : {{x}}, "Y": {{y}} }
""";
文字列補間と認識させる「{」の数分、「$」を付ける。
ちなみに、「”」の数も同じような感じで、「”””」までエスケープ無しならば、「””””」とする。
string example = """"
string jsonstr = """
[
{"Name": "T.Sumomo", "Email": "t.sumomo@momo.com"},
{"Name": "J.Sumomo", "Email": "j.sumomo@momo.com"},
{"Name": "S.Sumomo", "Email": "s.sumomo@momo.com"}
]
""";
"""";
上記一応、動作確認してます。
後、別記事にするつもりだけど、数値系がINumber<T>をインプリメントしたこと。これにより、intやdouble等数値専用のジェネリッククラスの定義が簡単になった。それと、Int128かな。