【发布时间】:2021-03-28 15:57:06
【问题描述】:
你好,我的名字是 parsa,我是一名 c# 程序员,我想使用连续的比较运算符,例如假设我们有三个变量,分别命名为 V1、V2、V3
Random rnd = new Random();
int V1 = rnd.Next(1,5), V2 = rnd.Next(1, 5), V3 = rnd.Next(1, 5);
它们中的每一个都等于 1 到 4 之间的随机数,那么我们想看看它们是否相等,它们是否等于 3?我们必须使用这段代码
if(V1 == V2 && V1 == V3 && V1 == 3)
//body
如果我想像这样使用它,这将给我一个错误!
if(V1 == V2 == V3 == 3)
//body
我可以像我写的代码那样使用它吗?
【问题讨论】:
-
创建一个 IComparable 类,您可以在其中创建一个自定义的 CompareTo() 方法来检查值是否相等:docs.microsoft.com/en-us/dotnet/api/…
-
@AlphaDelta 建议的“优势”是一年后阅读您的代码的人不会知道它在做什么。编写非惯用代码是个坏主意。坚持清晰易读
-
C# 有规则。如果您评估
V1 == V2 == V3 == 3,首先发生的事情是V1 == V2被评估为true或false(即布尔值)之一。然后(V1 == V2) == V3被评估。括号中的内容已经被确定为布尔值,因此您会得到一个比较布尔值和 V3 类型的表达式。您的错误(您应该在帖子中包含)很可能表明您不能在布尔值和 V3 的任何类型之间使用== -
@DavidG :我试图根据我的经验对问题给出真正的答案。不关闭帖子是因为新手不知道如何提出正确的问题。如果人们只是关闭问题,你希望新手如何学习。
-
@jdweng 不,我是说您的 cmets 几乎总是不正确的。这与结束问题无关。
标签: c# if-statement comparison comparison-operators