これを短縮するにはC#に方法はありますか?例えばx == y OR x == zと書く方が簡単ですか?
、どのようにあなたがこれを短縮します:
bool a = x == "YES" || x == "NO"
コード私は書いている:
public static bool isYESNO(string x)
{
return x == "YES" || x == "NO";
}
これを短縮するにはC#に方法はありますか?例えばx == y OR x == zと書く方が簡単ですか?
、どのようにあなたがこれを短縮します:
bool a = x == "YES" || x == "NO"
コード私は書いている:
public static bool isYESNO(string x)
{
return x == "YES" || x == "NO";
}
あなたが拡張メソッド書き込むことができます。
public static class Extensions
{
public static bool In<T>(this T item, params T[] items)
{
return items.Contains(item);
}
}
をし、このようにそれを使用します
:あなたは項目だけのカップルを持っているが、それはあなたが、それは構文が短くなりますそれらの多くを持っている場合var x = "YES";
bool a = x.In("YES", "NO");
Console.WriteLine(a);
それはあまりにも役に立たないかもしれません
bool a = x.In("YES", "NO", "TRUE", "FALSE", "SOME OTHER VALUE");
私は今までこの答えが一番好きです。 –
ありがとう、これはもっと一般化されたケースで、必要なときに他のものに簡単に適用できます。 – Sky
あなたはこれが役に立つかもしれ
if (new[] {"YES", "NO"}.Contains(x))
のように試すことができますあなたのOR条件をチェックする複数の値があるとき。何かのように
if (new[] {"YES", "NO", "value1", "value2", "value3", "value4"}.Contains(x))
あなたの現在の方法は非常に読みやすく短いです。
'}'がありません。 –
@ZoharPeled: - ありがとうございます。それを更新しました。 –
まったく同じではありません。あなたのコードは毎回追加のメモリ割り当てを行いますが、これは良い方法とはみなされません。 –
あなたの例に示されているもののような2つの項目だけをチェックしたいと思うと、あなたの方法はかなり短くなっていると思います。しかし、あなたがチェックするために(10件のアイテムなど)の項目の多くを持っている場合、比較のためにLINQ Contains
を使用することを検討してください:
string[] correctItems = new string[] { "YES", "NO", "bla1", "bla2", "bla3", "bla4", "bla5", "bla6", "bla7", "bla8" };
bool a = correctItems.Contains(x);
あなたは 'OR'のために10個の項目がないかぎり、あなたのメソッドはすでにかなり短くなっています。それはそれです... – Ian
' bool a =(x == "YES" || x == "いいえ"); 'IMOそれは、あなたがすぐに何が条件であるか、そして何が割り当てであるかをすぐに見ることができるので、より読みやすくなります。 –
私は本当に何があなたのアプローチに間違って表示されません。ある時点では、コードをコンパクトにしようとするとコードが読みにくく、時にはパフォーマンスが低下することになります。あなたはチューリングマシンでこの関数を書いてみて、あなたの幸運な星を数えることがC#でとても明確で簡潔であることを忘れないでください。 – paddy