Có cách nào nhanh chóng để so sánh sự bình đẳng của nhiều giá trị trong C# không?Điều này có thể bằng cách nào đó trong C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Cảm ơn
Có cách nào nhanh chóng để so sánh sự bình đẳng của nhiều giá trị trong C# không?Điều này có thể bằng cách nào đó trong C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Cảm ơn
public static class Common {
public static bool AllAreEqual<T>(params T[] args)
{
if (args != null && args.Length > 1)
{
for (int i = 1; i < args.Length; i++)
{
if (args[i] != args[i - 1]) return false;
}
}
return true;
}
}
...
if (Common.AllAreEqual<int>(a, b, c, d, e, f, g))
này có thể giúp :)
Không có điều này là không thể, bạn phải chia nó thành báo cáo riêng biệt.
if(x == y && x == z) // now y == z
{
}
Chúc may mắn
Không có cách nào trực tiếp để làm điều đó bằng C#, nhưng bạn có thể đi với một số lớp helper. Kiểm tra chủ đề này VB.NET dành riêng cho vấn đề này VB.Net: test multiple values for equality?
Trong C#, một nhà điều hành bình đẳng (==
) để đánh giá một bool
nên 5 == 6
đánh giá để false
.
Việc so sánh 5 == 6 == 2 == 2
sẽ dịch để
(((5 == 6) == 2) == 2)
mà đánh giá để
((false == 2) == 2)
mà sẽ cố gắng để so sánh một bool
với một int
. Chỉ khi bạn so sánh các giá trị boolean theo cách này thì cú pháp sẽ hợp lệ, nhưng có lẽ không làm những gì bạn muốn.
Cách làm nhiều so sánh là gì @Joachim Sauer gợi ý:
a == b && b == c && c == d
+1 để giải thích lý do tại sao nó không hoạt động trong C# –
Trong 'if', tôi sẽ sử dụng'! Args [i] .Equals (args [i - 1]) '. Điều này cho phép sử dụng các kiểu tham chiếu thực hiện 'IEqualityComparer'. Theo mặc định '==' so sánh cho bình đẳng tham chiếu trên các kiểu ref, không phải giá trị cơ bản của nó. – spoulson