C# 如何为静态数组创建personal ToList()函数

C# 如何为静态数组创建personal ToList()函数,c#,C#,我必须为所有类型的静态数组创建ToDynamic函数,该函数返回一个新的动态列表,其中包含从中调用该函数的数组元素,就像ToList一样,如下所示: int [] x = {1,2,3,4}; List<int> arr = x.ToDynamic(); public static class ArrayExtensions { public static List<T> ToDynamic<T>(this T[] items) =&

我必须为所有类型的静态数组创建ToDynamic函数,该函数返回一个新的动态列表,其中包含从中调用该函数的数组元素,就像ToList一样,如下所示:

int [] x = {1,2,3,4};
List<int> arr = x.ToDynamic();
public static class ArrayExtensions
{
    public static List<T> ToDynamic<T>(this T[] items)
        => new List<T>(items ?? throw new ArgumentNullException(nameof(items)));
}
你可以用x.ToList做你想做的事。如果您真的想自己实现它,您可以编写一个通用扩展方法,如下所示:

int [] x = {1,2,3,4};
List<int> arr = x.ToDynamic();
public static class ArrayExtensions
{
    public static List<T> ToDynamic<T>(this T[] items)
        => new List<T>(items ?? throw new ArgumentNullException(nameof(items)));
}
扩展方法的方案是

  // partial: often we have many extensions on collections (Tree, Aggregations etc.) 
  // which are implemented in different files
  public static partial class EnumerableExtensions {

    // IEnumerable<T> - choose argument's type being as much generic and basic as you can
    public static List<T> ToDinamic<T>(this IEnumerable<T> source) {
      // Validate argument(s)
      if (null == source)
        throw new ArgumentNullException(nameof(source)); // or return null or empty list 

      return new List<T>(source);
    }
  }

或者只列出arr=newlistx;这取决于ToDynamic扩展方法的来源。。。点击F12并查看它来自哪个程序集,然后尝试查找它的源代码,或者让ReSharper为您反编译它。我这样尝试过,但结果是错误的`@Suren您可以找到源代码。但是,您试图用自己的方法归档的是什么?