いくつかのブール値のいずれかが true の場合に true を返すメソッドを実現しようとしています。
bool a = false;
bool b = false;
bool c = true;
bool d = false;
private bool oneOfThem()
{
return a && b && c && d;
}
これはうまくいきません。しかし、どうすればこれを機能させることができますか?
いくつかのブール値のいずれかが true の場合に true を返すメソッドを実現しようとしています。
bool a = false;
bool b = false;
bool c = true;
bool d = false;
private bool oneOfThem()
{
return a && b && c && d;
}
これはうまくいきません。しかし、どうすればこれを機能させることができますか?
演算子の代わりにOR
( ) を使用.......||
&&
条件付き OR 演算子 (||) は、bool オペランドの論理 OR を実行します。最初のオペランドが true と評価された場合、2 番目のオペランドは評価されません。最初のオペランドが false と評価された場合、2 番目の演算子は、OR 式全体が true と評価されるか false と評価されるかを決定します。
private bool oneOfThem()
{
return a || b|| c || d;
}
&&
値のショートカットfalse
.. 値の||
評価とショートカットを続行しtrue
ます
入力ブール値のいずれかが true の場合、これは true を返します。
return a || b || c || d;
参考文献
入力ブール値の 1 つだけが true の場合、これは true を返します。
return new[] { a, b, c, d }.Count(x => x) == 1;
または
return !new[] { a, b, c, d }.Where(x => x).Skip(1).Any();
少なくとも 1 つが true であるという意味であれば、
return a || b || c || d;
1つだけを意味する場合は、
int truecount = 0;
if (a) truecount++;
if (b) truecount++;
if (c) truecount++;
if (d) truecount++;
return truecount == 1;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static bool a = false;
public static bool b = false;
public static bool c = true;
public static bool d = false;
static void Main(string[] args)
{
oneOfThem();
Console.Read();
}
public static void oneOfThem()
{
bool[] _bArr = { a , b , c , d };
char[] _cArr = { 'a', 'b', 'c', 'd' };
int i = 0;
foreach (bool _bool in _bArr)
{
if (_bool == true)
{
Console.WriteLine(_cArr[i] + " returned : True.");
}
i++;
}
}
}
}
宿題は終わりましたか?