首页 > 解决方案 > 我可以缩短这个“如果”条件吗?

问题描述

我有这个条件:

if (pt.left == anything || pt.left == null || pt.left == borders.left || borders.left == anything)

我可以让它更短吗?我正在考虑这样的事情:

if(pt.left == (anything || null || borders.left) || borders.left == anything)

有什么办法吗?

标签: c#if-statement

解决方案


您可以将元素放在一个数组中并使用包含。

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)

推荐阅读