エスケープシーケンスとか。
成果物
情報源
サイト左メニューから選択した。ここから先は左メニューから順次やっていく。チュートリアルページにはもうリンクがなかったので。
前回と被っている箇所は飛ばす。
エスケープシーケンスを使う
{
,}
をエスケープする
var xs = new int[] { 1, 2, 7, 9 }; var ys = new int[] { 7, 9, 12 }; Console.WriteLine($"Find the intersection of the {{{string.Join(", ",xs)}}} and {{{string.Join(", ",ys)}}} sets.");
Find the intersection of the {1, 2, 7, 9} and {7, 9, 12} sets.
$""構文の中で{{
,}}
のように2回連続で書けば{
,}
を1字出力する。内部の{}
は文字列補完として解釈される。
バックスラッシュ\
を出力する
var stringWithEscapes = $"C:\\Users\\{userName}\\Documents"; var verbatimInterpolated = $@"C:\Users\{userName}\Documents";
C:\Users\Jane\Documents C:\Users\Jane\Documents
三項演算子を使う
var rand = new Random(); for (int i = 0; i < 7; i++) { Console.WriteLine($"Coin flip: {(rand.NextDouble() < 0.5 ? "heads" : "tails")}"); }
Coin flip: heads Coin flip: heads Coin flip: heads Coin flip: tails Coin flip: tails Coin flip: heads Coin flip: tails
何もインポートせずにランダムが使えるっていいね。Rustとは違うのだよ。
カルチャ固有の結果を得る
var cultures = new System.Globalization.CultureInfo[] { System.Globalization.CultureInfo.GetCultureInfo("en-US"), System.Globalization.CultureInfo.GetCultureInfo("en-GB"), System.Globalization.CultureInfo.GetCultureInfo("nl-NL"), System.Globalization.CultureInfo.GetCultureInfo("ja-JP"), System.Globalization.CultureInfo.InvariantCulture }; var date = DateTime.Now; var number = 31_415_926.536; FormattableString message = $"{date,20}{number,20:N3}"; foreach (var culture in cultures) { var cultureSpecificMessage = message.ToString(culture); Console.WriteLine($"{culture.Name,-10}{cultureSpecificMessage}"); }
en-US 10/24/2019 12:21:59 PM 31,415,926.536 en-GB 24/10/2019 12:21:59 31,415,926.536 nl-NL 24-10-2019 12:21:59 31.415.926,536 ja-JP 2019/10/24 12:21:59 31,415,926.536 10/24/2019 12:21:59 31,415,926.536
インバリアントカルチャを使う
string messageInInvariantCulture = FormattableString.Invariant($"Date and time in invariant culture: {DateTime.Now}"); Console.WriteLine(messageInInvariantCulture);
Date and time in invariant culture: 10/24/2019 12:19:49
所感
エスケープシーケンスについては覚えておきたい。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
- SQLite 3.29.0 ※
- C# dotnet 3.0.100
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux