这是我编写的将逗号列表转换为T数组的代码段:

public static T[] ToArray<T>(this string s, params char[] seps)
{
    if (typeof(T) == typeof(int))
    {
        return s.Split(seps.Length > 0 ? seps : new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                    .Select(id => int.Parse(id))
                    .Cast<T>()
                    .ToArray();
    }
    else throw new Exception("cannot convert to " + typeof(T).Name);
}


我需要为每种要支持的类型放入一个盒子。

有没有更好的方法来编码这种东西?

最佳答案

您可以随时执行以下操作:

public static T[] ToArray<T>(this string s, Func<string, T> converter, params char[] seps)
{
    return s.Split(seps.Length > 0 ? seps : new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(converter)
            .ToArray();
}


您可以这样称呼:

"1,2,3".ToArray(int.Parse, ',', ';');


我同意.Parse有点难看,但是它为您提供了所需的任何数据类型的灵活性...

关于c# - 将该扩展方法拆分为数组的扩展方法如何进行参数化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12047075/

10-11 04:34