MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C Sharpの基礎 - 条件分岐のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C Sharpの基礎 - 条件分岐
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == 型スイッチ == C# 7以降では、<code>is</code>演算子や<code>switch</code>文の<code>case</code>機能拡張されて、型による処理の分岐が記述できる。<br> * <code>is</code>演算子でデータ型を確認して、一致した場合は、結果を変数で返す。 * <code>case</code>キーワードで型を指定して判定する。<br>型が一致した場合は、結果を変数で返す。 <br> ==== is演算子型チェック ==== <syntaxhighlight lang="c#"> // C# 6以前 // バイト順マーク (BOM) からエンコーディングを取得 if (bytes.Length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) => Encoding.BigEndianUnicode; // UTF-16 Big Endian else if (bytes.Length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) => Encoding.Unicode; // UTF-16 Little Endian else if (bytes.Length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) => Encoding.UTF8; // UTF-8 </syntaxhighlight> <br> <syntaxhighlight lang="c#"> // C# 7以降 // バイト順マーク (BOM) からエンコーディングを取得 if (bytes is [0xFE, 0xFF, ..]) => Encoding.BigEndianUnicode; // UTF-16 Big Endian else if (bytes is [0xFF, 0xFE, ..]) => Encoding.Unicode; // UTF-16 Little Endian else if (bytes is [0xEF, 0xBB, 0xBF, ..]) => Encoding.UTF8; // UTF-8 </syntaxhighlight> <br> ==== caseステートメントで型分岐 ==== 変換は型チェックで一致した場合のみ行われるため、実行処理は失敗しない。<br> <br> 以下の例では、<code>switch</code>文で文字列型および整数型の判定を実施している。<br> 文字列の場合は上のcaseに分岐、整数型の場合は下の分岐する。<br> <br> 分岐時において、変換した値を変数strおよび変数nで受けている。<br> <syntaxhighlight lang="c#"> object obj = "123"; switch (obj) { case string str: // objがstring型に一致する場合 Console.WriteLine("文字列:" + str); break; case int n: // objがint型に一致する場合 Console.WriteLine("整数値:" + n); break; } </syntaxhighlight> <br> 型の一致判定に加えて、変換後の値を使用して条件分岐する場合、<code>when</code>キーワードで条件を追加する。<br> <code>case</code>キーワード内でデータ型を指定下後ろに when で得られた変数に対しての条件を記述できます。 <br> 判定は一般的な<code>switch</code>文と同様、<code>case</code>キーワードの上から順に逐次行われる。<br> そのため、<code>case</code>キーワードの順序が処理に影響する。<br> <syntaxhighlight lang="c#"> switch (obj) { case int n when n == 0: // int型に一致する場合、かつ、値が0の場合 Console.WriteLine("n is int, and value is eqauls 0."); break; case int n when n < 3: // int型に一致する場合、かつ、値が3以下の場合 Console.WriteLine("n is int, and value is less than 3."); break; case string s when s.Length >= 3: // string型に一致する場合、かつ、3文字以下の場合 Console.WriteLine("n is str, and length is greater than 3."); break; default: Console.WriteLine("etc..."); break; } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:C_Sharp]]
C Sharpの基礎 - 条件分岐
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse