-10

我正在尝试实现一种方法,如果几个布尔值之一为真,则该方法返回真。

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

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

这行不通。但我怎么能做到这一点呢?

4

6 回答 6

5

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

|| 运算符(C# 参考)- MSDN

条件或运算符 (||) 对其布尔操作数执行逻辑或。如果第一个操作数的计算结果为真,则不计算第二个操作数。如果第一个操作数的计算结果为 false,则第二个运算符确定整个 OR 表达式的计算结果为 true 还是 false。

于 2013-05-04T13:28:43.647 回答
3
private bool oneOfThem()
{
   return a || b|| c || d;
}

&&值的快捷方式false..||将继续评估true值和快捷方式

于 2013-05-04T13:28:29.003 回答
2

如果任何输入布尔为真,这将返回真:

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

延伸阅读


如果输入布尔值之一为真,这将返回真:

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

或者

return !new[] { a, b, c, d }.Where(x => x).Skip(1).Any();
于 2013-05-04T13:28:40.093 回答
2

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

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

如果你只说一个,

int truecount = 0;

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

return truecount == 1;
于 2013-05-04T13:30:08.460 回答
2

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

条件或运算符 (||) 对其布尔操作数执行逻辑或。如果第一个操作数的计算结果为真,则不计算第二个操作数。如果第一个操作数的计算结果为 false,则第二个运算符确定整个 OR 表达式的计算结果为 true 还是 false。

return a || b || c || d;
于 2013-05-04T13:31:40.023 回答
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++;
            }
        }
    }
}

家庭作业完成了吗?

于 2013-05-04T14:15:19.673 回答