質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

3回答

24699閲覧

switch文のcaseについて。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2016/12/02 08:34

編集2016/12/02 09:28

下記のコードで、caseの箇所をコメントに書き換えるとエラーが起きてしまいます。
caseに変数は指定できないのでしょうか?

C#

1 int BLOCK1 = 1; 2 int BLOCK2 = 2; 3 int BLOCK3 = 3; 4 5 void Start(){ 6 int i = BLOCK1; 7 switch (i) { 8 case 1: 9 //case BLOCK1: //エラー。 10 Debug.Log ("1"); 11 break; 12 } 13 }

##試したこと

「case 〇〇:」
で、〇〇に変数名が入っているのを見たことがあるような気がするけど、
実際に変数を書いて試してみるとエラーになる。
「case BLOCK1:」のような書き方はできませんか?

##エラー内容

error CS0150: A constant value is expected

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

まずは…。
具体的にエラーの内容を張っていただけると、詳細な回答ができるので、それもセットで投稿するようにするといいと思います。

条件分岐 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
http://ufcpp.net/study/csharp/st_branch.html#switch

こちらのwebサイトにも書かれていますが、C#でのswitch-caseは値のみ指定ができます。
定数などは値として扱われるので、下記のようなコードにすると実行できると思います。

// const int BLOCK1 = 1; const int BLOCK2 = 2; const int BLOCK3 = 3; void Start(){ int i = BLOCK1; switch (i) { case BLOCK1: Debug.Log ("1"); break; } }

投稿2016/12/02 08:56

trashbox

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/02 09:29

ご回答ありがとうございます。 勉強になりました。 また、ご指摘ありがとうございます。エラーも掲載するように気を付けます。
guest

0

ベストアンサー

C#ではcase句に変化する可能性のある値を使えなかったと思います。
constをつけることで、caseでも使えるようになります。

const int BLOCK1 = 1; const int BLOCK2 = 2; const int BLOCK3 = 3;

投稿2016/12/02 08:42

kanitaoru

総合スコア204

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/02 08:50

ご回答ありがとうございます。勉強になりました。
guest

0

case に指定できるのは定数だけです(文字列定数も利用できます)。

ですから、const として定義されたユーザー定義の定数は指定できます。

投稿2016/12/02 08:41

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/02 08:49

ご回答ありがとうございます。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問