0

我有这样一段代码:

using System.Collections.Generic;
using System.Linq;

namespace PricingCoefficientService.Extensions
{
    public static class IntExt
    {
        public static bool IsIn(this int integer, IEnumerable<int> collectionOfIntegers)
        {
            return collectionOfIntegers.Contains(integer);
        }
    }
}

它是一种扩展 int 的扩展方法。我相信它的功能是显而易见的。

但是,如果我不想使其通用以使其可用于每个值类型或对象怎么办?

任何想法?

谢谢你

4

3 回答 3

2

只需使方法通用

public static bool IsIn<T>(this T value, IEnumerable<T> collection)
{
    if (collection == null)
    {
        throw new ArgumentNullException("collection");
    }

    return collection.Contains(value);
}
于 2013-09-19T09:21:48.637 回答
1

试试这个代码:

public static bool IsIn<T>(this T generic, IEnumerable<T> collection)
{
    if(collection==null || collection.Count()==0) return false; // just for sure
    return collection.Contains(generic);
}

它的类型T可以是任何类型,现在您可以编写:

var list = new List<double>() {1,2,3,4};
double a = 1;
bool isIn = a.IsIn(list);
于 2013-09-19T09:21:39.223 回答
1

如果需要值类型

public static bool IsIn(this ValueType integer, IEnumerable<int> collectionOfIntegers)
{
....
}
于 2013-09-19T09:23:23.503 回答