「C Sharp」の版間の差分

ナビゲーションに移動 検索に移動
1,897 バイト追加 、 1 か月前
switch式はたぶん .net core でないと動作しないので、コードに注記
(→‎列挙型: MSドキュメントへのリンク追加)
(switch式はたぶん .net core でないと動作しないので、コードに注記)
switch文についての説明は省略する。2022年6月現在、まだ当wikiにC#のif文やswitch文の教材は無いので、標準Cなどの解説を参照してもらいたい。
 
※ 下記は .net core でのプログラム
:<syntaxhighlight lang="csharp">
using System;
 
week weekinst = week.Saturday;
; 実行結果 :<syntaxhighlight lang="text">
土曜日
</syntaxhighlight>
 
 
enumについては、後述する列挙型のセクションを参照せよ。
 
enumを使わなくてもswitch文は書けるが、現代では、なるべくenumを使って書くのが望ましい。
 
 
enum を使わない場合、たとえば下記のように、条件を意味する数値をプログラマー側で決めておいて割り当てをしなければならず、色々と問題がある(プログラマーごとの割り当てルールのバラツキの問題、追加で挿入の条件があると以降の番号を振り直しの問題、など)。
 
:<syntaxhighlight lang="csharp">
using System;
 
public class Hello {
public static void Main(string[] args) {
 
const int Saturday = 0;
const int Sunday = 1;
const int Monday = 2;
const int Tuesday = 3;
// 長いので省略
 
var weekinst = Monday; // とりあえず月曜日
 
switch (weekinst) {
 
case Saturday:
Console.WriteLine("土曜日");
break;
case Sunday:
Console.WriteLine("日曜日");
break;
case Monday:
Console.WriteLine("月曜日");
break;
default:
Console.WriteLine("火曜から金曜");
break;
}
 
}
}
</syntaxhighlight>
; 実行結果 :<syntaxhighlight lang="text">
月曜日
</syntaxhighlight>
 
もしenumを使わないと、たとえば「月曜日(Monday)を0にして数え始めたい」とか顧客の要望などが変わった場合、下記コードの部分の番号を振り直しになるのである。このようにenumを使わないと色々と非効率である。
 
:<syntaxhighlight lang="csharp">
const int Saturday = 0;
const int Sunday = 1;
const int Monday = 2;
const int Tuesday = 3;
// 長いので省略
 
</syntaxhighlight>
 
==== switch式 ====
C#7~8 から「switch 式」というのが追加された。下記のような処理ができる。
 
※ 下記は .net core でのプログラム
 
:<syntaxhighlight lang="csharp">
Saturday
}
 
</syntaxhighlight>
; 実行結果 :<syntaxhighlight lang="text">
enum は下記のように使います。なおコードはMicrosoft Doc のものを[https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/enum 『列挙型 (C# リファレンス)』2022/04/06]、当wikiで紹介した実行環境でも動くように修正したものです。
 
※ 下記は .net framework および mono のコード
:<syntaxhighlight lang="csharp">
using System;
23,090

回編集

案内メニュー