1

わかりました、複数の条件に基づいて何かと等しくしたい文字列がある場合、それを実装する最良の方法は何ですか?

疑似コード

int temp = (either 1, 2, or 3)
string test = (if temp = 1, then "yes") (if temp = 2, then "no") (if temp = 3, then "maybe")

これを行うための簡潔な方法はありますか?あなたならどうしますか?

4

9 に答える 9

11

スイッチを使う

switch(temp)
{
    case 1:
        return "yes";
    case 2:
        return "no";
    case default:
        return "maybe";
}
于 2012-09-21T20:27:42.730 に答える
5

他の回答で述べたように switch ステートメントを使用できますが、辞書も使用できます。

var dictionary = new Dictionary<int, string>();
dictionary.Add(1, "yes");
dictionary.Add(2, "no");
dictionary.Add(3, "maybe");

var test = dictionairy[value];

この方法は、switch ステートメントよりもはるかに柔軟で、ネストされた 10 項演算子ステートメントよりもはるかに読みやすいです。

于 2012-09-21T20:31:40.390 に答える
4
string test = GetValue(temp);

public string GetValue(int temp)
{
  switch(temp)
  {
    case 1:
      return "yes";

    case 2:
      return "no";

    case 3:
      return "maybe";

    default:
      throw new ArgumentException("An unrecognized temp value was encountered", "temp");
  }
}
于 2012-09-21T20:30:00.970 に答える
2

switchステートメントを使用できます

string temp = string.Empty;
switch(value)
{
    case 1:
        temp = "yes";
        break;
    case 2:
        temp = "no";
        break;
    case 3:
        temp = "maybe";
        break;
}
于 2012-09-21T20:27:34.157 に答える
2

基本的な考え方は次のとおりです。

String choices[] = {"yes","no","maybe"};
string test = choices[temp-1];

実際に実装するにはさまざまな方法があります。条件変数が何であるかに応じて、ある種のキーと値のリストとして実装したい場合があります。例については、Zeebonkの回答を参照してください。

于 2012-09-21T20:31:33.373 に答える
1

このスイッチは擬似コードに近く、正確なC#コードです。

int temp = /* 1, 2, or 3 */;
string test;
switch(temp)
{
    case 1:
        test = "yes";
        break;
    case 2:
        test = "no";
        break;
    case 3:
        test = "maybe";
        break;
    default:
        test = /* whatever you want as your default, if anything */;
        break;
}

擬似コードにはデフォルトのケースは含まれていませんが、含めることをお勧めします。

于 2012-09-21T20:42:19.560 に答える
1

最も簡潔な答えは、ネストされた三項演算子です

string test = (temp == 1 ? "yes" : (temp == 2 ? "no" : (temp == 3 ? "maybe" : "")));

一時値が 1,2,3 のみの場合

string test = (temp == 1 ? "yes" : (temp == 2 ? "no" : "maybe"));

もちろん、これは尋ねられたとおりの簡潔な答えであり、これが最善であることを意味するものではありません。それを除外できなかった場合、将来テストする値がさらに必要になる場合は、@zeebonk の回答で説明されているように、辞書アプローチを使用することをお勧めします。

于 2012-09-21T20:29:13.390 に答える
0

物事を好転させることもできます:

class Program
{
    enum MyEnum
    {
        Yes = 1, 
        No, 
        Maybe
    }

    static void Main(string[] args)
    {
        Console.WriteLine(MyEnum.Maybe.ToString());
        Console.ReadLine();
    }
}

これは、temp が 1、2、または 3 にしかならないことにもより一致しています。int コンパイラの場合、temp が 34 の値を取得しても警告は表示されません。

これを行うこともできます:

string GetText(int temp){ 
    return ((MyEnum)temp).ToString();
}

GetText(2) は「いいえ」を返します

于 2012-09-21T21:31:15.110 に答える
0

明らかな答えはスイッチケースです

しかし、別のフレーバー:

int temp = x; //either 1,2 or 3

string test = (temp == 1 ? "yes" : temp == 2 ? "no" : "maybe");
于 2012-09-21T20:30:21.340 に答える