gpt4 book ai didi

c# - 确定值是否不同

转载 作者:行者123 更新时间:2023-12-03 18:25:01 25 4
gpt4 key购买 nike

假设我有 4 个变量

bool value1 = false;
bool value2 = false;
bool value3 = true;
bool value4 = false;
并且它们都没有相同的值(都是真 || 都是假)
我找到了 2 种方法,无论如何它们看起来都不容易理解。
bool areDifferent = !(value1 == value2 == value3 == value4);
bool areDifferent = new[] { value1, value2, value3, value4 }.Distinct().Count() > 1;
问题:是否有其他方法,在可读性/可理解性方面更好?

最佳答案

为了可读性和理解,我会交换逻辑。当您检查值是否不同时,不清楚 - 所有值都应该不同(考虑整数值 1、2、3),或者值可能相等,但至少有一个不同的值(1、2、1)?当您检查所有值是否相等时,它总是很清楚。
我会将此逻辑提取到命名良好的方法中(如果需要,您甚至可以将其设为通用):

public static bool AllEqual(params bool[] values)
{
if (values.Length == 0)
return true;

var first = values[0];
for (int i = 1; i < values.Length; i++)
if (values[i] != first)
return false;

return true;
}
和用法
var notAllEqual = !AllEqual(value1, value2, value3, value4);
使用声明式方法,您的代码描述了您正在做什么,而不是告诉读者如何做,让读者自己了解什么。

更新:如果你总是处理四个 boolean 值,检查它们是否不完全相等的最简单方法是
(value1 ^ value2) || (value2 ^ value3) || (value3 ^ value4)
但就可读性而言,任何命令式方法都比声明式方法差

关于c# - 确定值是否不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65721821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com