[英]Can I make this 'if' condition shorter?
我有這個條件:
if (pt.left == anything || pt.left == null || pt.left == borders.left || borders.left == anything)
我可以縮短嗎? 我在想這樣的事情:
if(pt.left == (anything || null || borders.left) || borders.left == anything)
有什么辦法嗎?
您可以將元素放在數組中並使用 contains。
if((new string[]{anything, null, borders.left}).Contains(pt.left) || borders.left == anything)
或者,放在 if 之外:
var arr = new string[]{anything, null, borders.left};
if(arr.Contains(pt.left) || borders.left == anything)
或者,使用擴展方法:
public static class MyExtensions
{
public static bool IsIn<T>(this T obj, params T[] array)
{
return array.Contains(obj);
}
}
用法:
if(pt.left.IsIn(anything, null, borders.left) || borders.left == anything)
你可以清理這個制作擴展方法:
//I'm assuming you need value equality
public static bool EqualsOneOf<T>(
this T value,
T option1,
T option2,
params T[] options)
where T: IEquatable<T>
{
if (value.Equals(option1))
return true;
if (value.Equals(option2))
return true;
if (options != null && options.Contains(value))
return true;
return false;
}
現在,你的表達是:
if(pt.left.EqualsOneOf(anything, null, borders.left) || borders.left == anything)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.