[C#]合并与用户实施 zip 功能不同大小的数组

标签: Linq C#
发布时间: 2017/2/27 4:27:00
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

尝试以下的代码 (发现这里)︰

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            var a = new List<int> { 1, 2, 3 };
            var b = new List<int> { 1, 2, 3, 4, 5 };

            var xxx = a.Merge(b, (x, y) => x + y);

            foreach (var c in xxx)
            {
                Console.WriteLine(c);
            }
        }
        static IEnumerable<T> Merge<T>(this IEnumerable<T> first,
                IEnumerable<T> second, Func<T, T, T> operation)
        {
            using (var iter1 = first.GetEnumerator())
            using (var iter2 = second.GetEnumerator())
            {
                while (iter1.MoveNext())
                {
                    if (iter2.MoveNext())
                    {
                        yield return operation(iter1.Current, iter2.Current);
                    }
                    else
                    {
                        yield return iter1.Current;
                    }
                }
                while (iter2.MoveNext())
                {
                    yield return iter2.Current;
                }
            }
        }
    }
}


出现此错误︰

'System.Collections.Generic.List' '合并' 和 '合并' 接受第一个参数的类型没有扩展方法不包含定义 ' 可以发现 System.Collections.Generic.List (是否缺少 using 指令或程序集引用?)

其中道理。但因为我不是很确定的代码应该如何工作,我想充分理解它......

如何解决这个问题?

解决方法 1:

必须在静态类- https://msdn.microsoft.com/en-us/library/bb311042.aspx中定义扩展。

解决办法︰ 确保你 Program 类,该类包含 Main 是静态的。

static  class Program
{
    private static void Main() ....

注︰ 适当的补丁就是移动 Merge 分离静态类中的相同的命名空间或其他命名空间包含扩展方法 using

赞助商