「C Sharp」の版間の差分

ナビゲーションに移動 検索に移動
2,411 バイト追加 、 1 か月前
→‎※編集中: C#7~8 から「switch 式」というのが追加された。下記のような処理ができる。
(→‎record型: windowsでもrecord型を使えるのを確認)
(→‎※編集中: C#7~8 から「switch 式」というのが追加された。下記のような処理ができる。)
</syntaxhighlight>
; 実行結果 :<syntaxhighlight lang="text">
13
13
 
</syntaxhighlight>
 
数値以外も対応可能な形式として、特に指定のない事を明示する場合、<code> {0:g} </code> のように「:g」をつける方法もあります。一般 general の g です。
 
=== 条件分岐 ===
まず、switch文やenumはC#では下記のように使う。.net core 6 で下記コードが動くので、C#10 に対応しているはず。
 
switch文についての説明は省略する。2022年6月現在、まだ当wikiにC#のif文やswitch文の教材は無いので、標準Cなどの解説を参照してもらいたい。
 
:<syntaxhighlight lang="csharp">
 
week weekinst = week.Saturday;
 
switch (weekinst) {
 
case week.Saturday:
Console.WriteLine("土曜日");
break;
case week.Sunday:
Console.WriteLine("日曜日");
break;
 
default:
Console.WriteLine("平日");
break;
}
 
enum week {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
 
</syntaxhighlight>
; 実行結果 :<syntaxhighlight lang="text">
土曜日
</syntaxhighlight>
 
 
C#7~8 から「switch 式」というのが追加された。下記のような処理ができる。
 
:<syntaxhighlight lang="csharp">
week weekval = week.Sunday;
 
string message = weekval switch { // switch式用のインスタンス的なものを作成しないといけない
 
week.Saturday => "土曜日" ,
 
week.Sunday => "日曜日" ,
 
_ => "平日" , // default に相当
 
};
 
Console.WriteLine(message);
 
 
enum week {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
 
</syntaxhighlight>
; 実行結果 :<syntaxhighlight lang="text">
土曜日
</syntaxhighlight>
 
switch式では条件に「default」は使えない。アンダーバー<code>_</code>で指定した条件以外の値の場合の結果を指定する。
 
C#のコンパイラでは、switch式の全ての値を網羅してないかぎり、アンダーバー<code>_</code>で指定しないと、警告が出る。よって上記のようなコードになる。
 
なお、
week.Saturday =>Console.WriteLine("土曜日"); // エラー
と書いても、うまく行かない。コンパイラにvoid型に変換できないと出るが、しかし
void message = weekval switch { // エラー
などと書き換えてもエラーになる。
 
よって、上記コードのように、switch式の結果(右側)では、命令ではなく値だけを指定して事前に用意された変数に代入することになる。別途、その結果を代入した変数をつかって目的の処理をする命令が必要である。
 
 
=== record型 ===
23,090

回編集

案内メニュー