带有可选参数的函子

时间:2021-05-03 07:19:00

标签: c#

我们过去与 Functor 一起工作,现在我们想扩展一个 Functor 但这是可选的。这可能吗? 我知道我可以用一个可选参数扩展一个函数,但我也可以用一个 Functor 来实现吗?

这是我们实际的 Functor,现在我们需要一个额外的参数。

public static Functor<DirectoryInfo, String, IList> CreateFunctor

1 个答案:

答案 0 :(得分:0)

我认为当前的答案,一个带有可选参数的委托示例指的是 Functor 的实例,而不是 Functor 定义本身,它是根据 类型.一个泛型。我已经测试了下面的代码,它没有编译..所以我认为它不能用 C# 完成

仅当实现具有相同的标头时才有效,因此两个函数都应包含可选参数(即:具有 Func2 的形状)

namespace ConsoleApp1 
{
 public delegate void Functor2<T1,T2,T3>(T1 t1, T2 t2, T3 t3, int epar = 0);

 class Program
 {
    public static Functor2<DirectoryInfo, string, IList> MyFunc1;
    public static Functor2<DirectoryInfo, string, IList> MyFunc2;

    public static void Func1(DirectoryInfo d, string s, IList somelist)
    { }

    public static void Func2(DirectoryInfo d, string s, IList somelist, int epar = 0)
    { }

    static void Main(string[] args)
    {
        MyFunc1 = Func1; // I get a red line here !
        MyFunc1 = Func2;
    }
  }
}
相关问题