なんかいろいろと書いてくブログ

関東のどこかで働く、一般人

【C# 11 Preview】Raw string literals

前回の記事の続き C# 11 Previewを触ってみようというはなし
今回は引用符等のエスケープが必要な文字リテラルについて

注意

この記事はC# 11 Previewに関する記事になります

C# 11の仕様については今後変更される可能性があります 

Raw string literals

"{}を使用した文字リテラルの場合、
対象の文字をエスケープをしないとC#が解釈してしまい、
適切な文字リテラルをつくることができませんでしたが

エスケープ文字を使用せずとも三重のダブルクォートを使用することにより
エスケープ文字なしで文字リテラルが作れるようになるとのこと

C# 10以前

// string message = "Hello "World" "; // Error
string message = "Hello \"World\" "; // エスケープすればOK

C# 11 Preview

string message = """Hello "World" """; // OK

また、補完文字について、ネストした{}がある場合、 ネスとした数に応じて 文字リテラル先頭の$をつけることにり補完を効かせることができる

var hello = "Hello";
var world = "World!";

var message = $$"""
   {{hello}} {{world}}
   """;
Console.WriteLine(message);
//Hello World!

var message2 = $$$"""
   {{hello}} {{world}}
   """;
// {{hello}} {{world}}


JSONをやSQLで文字リテラルとして扱う際、
元のJSONなりSQLをそのまま貼り付けすることがこの機能によりできるようになりそう
なので、地味にお世話になりそう