如果4个bool中的一个为真,如何返回true

时间:2013-05-04 13:27:33

标签: c#

我正在尝试实现一个方法,如果其中一个bool为真,则返回true。

bool a = false;
bool b = false;
bool c = true;
bool d = false;

private bool oneOfThem()
{
   return a && b && c && d;
}

这不起作用。但是我怎么能让这个工作呢?

6 个答案:

答案 0 :(得分:5)

使用OR||)代替&&运算符.......

|| Operator (C# Reference) - MSDN

  

条件OR运算符(||)执行其bool的逻辑或运算   操作数。如果第一个操作数的计算结果为true,则为第二个操作数   没有评估。如果第一个操作数的计算结果为false,则第二个操作数   operator确定OR表达式是否作为整体求值   是真还是假。

答案 1 :(得分:3)

private bool oneOfThem()
{
   return a || b|| c || d;
}
&&值上的

false个短号.. ||将继续评估和true

答案 2 :(得分:2)

如果任何输入bool为真,则返回true:

return a || b || c || d;

进一步阅读


如果其中一个输入bool为真,则返回true:

return new[] { a, b, c, d }.Count(x => x) == 1;

或者

return !new[] { a, b, c, d }.Where(x => x).Skip(1).Any();

答案 3 :(得分:2)

如果你的意思是至少一个是真的,

return a || b || c || d;

如果你的意思只有一个,

int truecount = 0;

if (a) truecount++;
if (b) truecount++;
if (c) truecount++;
if (d) truecount++;

return truecount == 1;

答案 4 :(得分:2)

使用||代替&&操作符..

  

条件OR运算符(||)执行其bool的逻辑或运算   操作数。如果第一个操作数的计算结果为true,则为第二个操作数   没有评估。如果第一个操作数的计算结果为false,则第二个操作数   operator确定OR表达式是否作为整体求值   是真还是假。

return a || b || c || d;

答案 5 :(得分:0)

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++;
            }
        }
    }
}

完成家庭作业?