传递功能

时间:2012-08-25 04:13:51

标签: c#

我想在不使用可选参数的情况下重载函数。当我使用泛型时,我遇到了一个问题;但是,它适用于简单类型。我很困惑,谢谢你的帮助。 B类使用int来验证我的语法;而C类是我想要完成的。

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


namespace X
{
    class A
    {
    }
    class B
    {

        public static int f(int i1, int i2)
        {
            return i1 + 12;
        }
        public int ix(Func<int,int,int> f1,int v1)
        {
            return 1;
        }
        public void iy(Func<int, int, int> f1, int v1)
        {
            int i = ix(f1, 1);
        }
        public void iz()
        {
            int i = ix(f, 1);
        }
    }

    class C
    {
        public static List<A> f(List<A> a, int v)
        {
            return new List<A>();
        }
        public int ax(Func<List<A>, List<A>, int> f1, int v1)
        {
            return 1;
        }
        public void ay(Func<List<A>, List<A>, int> f1, int c)
        {
            int i = ax(f1, c);
        }
        public void az()
        {
            int i = ax(f, 1);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你有一个小错误。您的方法签名不匹配。

您需要更改C.F(..)的定义,它应该是:

public static int f(List<A> a, List<A> b)
{
    return 1; //List<A>();
}