C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: switch文で変数を使う方法


(過去ログ 121 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■72430 / inTopicNo.1)  switch文で変数を使う方法
  
□投稿者/ meme (18回)-(2014/06/09(Mon) 15:39:29)

分類:[C#] 

C#でswitch文で条件に変数を使う方法を探しています。

Vb.Netではswitchの代わりにSelectというのを使っていますが、Selectでは変数を
分岐の条件として使うことができます。


VBの例)

Select Case a
Case b
MsgBox("bです")
Case c
MsgBox("cです")
Case Else
MsgBox("どれでもなし")
End Select


こんな感じで、条件にbやcなどの変数を使うことができます。
同じようなことをC#でもしようと思って、下記のような感じで
作ろうと思ったのですが・・・


switch (x)
{
case a:
MessageBox.Show("aです");
break;
case b:
MessageBox.Show("bです");
break;
default:
MessageBox.Show("defaultです");
break;
}


とすると、変数のaとbは使えませんよと言われコンパイルできません。


ネットで色々調べたのですがC#のSwitchでは確かに条件に変数を使うことが
できないようなのですが、変数を使いたいときはどうやっているのでしょうか。

If文でズラズラ書くのもできるはできるのですが、switch文の方が
見やすくてきれいでなるべく使いたいです。


C#でも変数で分岐したいと思う人は多いのではないかと思うのですが
実際にコーディングされている方はどのように組んでいるでしょうか?


引用返信 編集キー/
■72435 / inTopicNo.2)  Re[1]: switch文で変数を使う方法
□投稿者/ 774RR (162回)-(2014/06/09(Mon) 17:22:04)
判定したい変数が数個なら if
いっぱいあるなら配列にするとかテーブルにするとか

引用返信 編集キー/
■72436 / inTopicNo.3)  Re[1]: switch文で変数を使う方法
□投稿者/ 渋木宏明 (27回)-(2014/06/09(Mon) 17:38:53)
渋木宏明 さんの Web サイト
> C#でswitch文で条件に変数を使う方法を探しています。
(略)
> とすると、変数のaとbは使えませんよと言われコンパイルできません。

「変数」が const なら出来ます。

const int a = 1;
const int b = 2;
const int c = 3;

static void Main(string[] args)
{
  int x = 2;

  switch(x)
  {
    case a:
      Console.WriteLine("a");
      break;

    case b:
      Console.WriteLine("b");
      break;

    case c:
      Console.WriteLine("c");
      break;

    default:
      Console.WriteLine("default");
    }
}

引用返信 編集キー/
■72447 / inTopicNo.4)  Re[2]: switch文で変数を使う方法
□投稿者/ みい (8回)-(2014/06/09(Mon) 20:58:27)
あくまでswitch/case使いたいなら…
1.変数を配列にする
2.for文で配列を回して一致したインデックスを戻す関数を作る
3.2の関数の戻り値をswitch caseで分ける

出題例のような内容だと文字列も配列にして関数から戻すようにしますけど。

引用返信 編集キー/
■72454 / inTopicNo.5)  Re[3]: switch文で変数を使う方法
□投稿者/ meme (19回)-(2014/06/10(Tue) 09:11:10)
774RRさん、渋木宏明さん、みいさん
お答えいただきありがごうございました。


色々な実装方法があるんですね。参考になりました。
c#とVB.Netは書き方が違うだけで中身はほとんど同じかと思っていたのですが
こんな基本的な書き方でも違いがあるんですね。


一番シンプルでわかりやすいif文での書き方を検討してみようと思います。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -