4

とにかくこの声明を修正する方法はありますか

if (sAwnser == ("hello" || "Hello" || "hi" || "Hi" || "hey" || "Hey" || "Hay" || "hey"))
{

}

エラーが発生します

Operator '||' cannot be applied to operands of type 'string' and 'string'

誰かがそれを助けることができれば、それは大歓迎です

4

10 に答える 10

13

あなたができる非常に多くの比較を避けるために

var list = new string[] {"hello", "Hello", "hi", "Hi", "hey", "Hey", "Hay", "hey"};

if (list.Contains(answer))
{
}
于 2013-11-02T13:16:30.627 に答える
8

毎回最初の変数を明示的に参照する必要があります。

sAwnser == "hello"ブール値を返します。ブール値を文字列と比較することはできません。

あなたができることは、コレクションを作成し、それにすべての個別の文字列を追加することです。その後、その上で使用できます.Contains()

于 2013-11-02T13:13:55.930 に答える
4

まず第一に、あなたの問題の根本を指摘したいと思います。

から|| Operator (C# Reference)

条件付き OR 演算子 (||) は、bool オペランドの論理 OR を実行します。

したがって、演算子stringで値を使用することはできません。||両方のオペランドはboolean値でなければなりません。

Enumerable.Any同様にLINQを使用できます。

string[] array = new string[] {"hello", "Hello", "hi", "Hi", "hey", "Hey", "Hay", "hey"};
if (array.Any(sAwnser.Equals))
{
   // Your sAwnser is equal one of your array values.
}
于 2013-11-02T13:16:27.573 に答える
2
if (sAwnser == "hello" || sAwnser == "Hello" || sAwnser == "hi" || sAwnser == "Hi" || sAwnser == "hey" || sAwnser =="Hey" || sAwnser =="Hay" || sAwnser =="hey"))
{

}

または、チェックを行う別の関数を書くことができます

private bool CheckInput(String input)
        {
            String[] sAwnser = {"hello", "Hello", "hi", "Hi", "hey", "Hey", "Hay", "hey"};
            for (int i = 0; i < sAwnser.Length; i++)
            {
                if (sAwnser[i].Equals(input));
                return true;
            }
            return false;
        }
于 2013-11-02T13:14:35.937 に答える
1

実際にここでできることは次のとおりです。

if ((sAwnser == "hello") || (sAwnser =="Hello") || (sAwnser =="hi") || (sAwnser =="Hi") || (sAwnser =="hey") || (sAwnser =="Hey") || (sAwnser =="Hay") || (sAwnser =="hey"))
{
 //insert code here
}

他の提案と比較して、これはコーディングする最も簡単な方法かもしれませんが、これは良い習慣ではないと考える人もいるかもしれません。とにかく、コーディングを楽しんでください。

于 2013-11-02T14:18:20.133 に答える
0

これらすべての値を含む const 文字列を宣言することもできます。確認する必要があるたびに、contains メソッドを呼び出すだけです。

private const string test = "HellohelloHihiHeyhey";

static void Main(string[] args)
{
    string UserInput = Console.ReadLine();

    if (test.Contains(UserInput))
    {
        Console.WriteLine("success!!");
    }   
}
于 2013-11-02T14:42:36.143 に答える