5

複数のオペランドを単一の演算子に適用する方法は?

例:

それ以外の

if (foo == "dog" || foo == "cat" || foo == "human")

私は次のようなものを持つことができます:

if (foo == ("dog" || "cat" || "human"));
4

4 に答える 4

9

最初のバージョンでは、1つの式に複数の演算子がすでに含まれています。複数のオペランド( "dog"、 "cat"、 "human")を単一の演算子==この場合)に適用したいようです。

その特定の例では、次を使用できます。

// Note: could extract this array (or make it a set etc) and reuse the same
// collection each time we evaluate this.
if (new[] { "dog", "cat", "human" }.Contains(foo))

しかし、すべてのオペレーターにこれの一般的な万能バージョンはありません。

編集:コメントに記載されているように、上記はハードコードされたバージョンほどには機能しません。

于 2012-04-27T10:21:06.887 に答える
1

このようなことを行うことができます:

List<string> values = new List<string> {"dog", "cat", "human"}; 
values.Any(s=>s.Equals(foo ));

しかし、私の意見では、あなたが書いたコードは、他のどのソリューションよりもすでに読みやすくなっています。ここで考えられる数十のオプションについて話していなければ、当然です。

于 2012-04-27T10:22:04.323 に答える
1

スイッチケースを使用

switch(foo)
{
   case "dog":
   case "cat":
   case "human":
   //Your Code
   break;
}
于 2012-04-27T11:23:51.597 に答える
0

いつでも試して、コンパイルして、自分で確認できます:)

("dog" || "cat" || "human")

は C# にとって意味のある式ではありません

たぶん、それらを配列に入れてループすることができます。

または、それらを配列に入れて、クールなラムダ式を考え出してください。

于 2012-04-27T10:25:35.263 に答える