了解委托的实现

时间:2015-10-26 05:50:38

标签: c# .net delegates

我一直在理解委托的优点。我已经读过它可以用作将方法作为参数传递的工具。例如假设你有一个调用比较方法作为参数的排序方法那么你可以选择你想要的比较方法作为来电者。 我知道并理解整个逻辑但是当我尝试根据这些知识创建一个简单的应用程序时,它不起作用。这里我有3个类,我将传递一个方法作为参数,但我不知道我应该如何在我的第二个类中调用它。

首先:

class test1
    {
        public test1()
        {

        }

        public static bool Input()
        {
            return true;
        }
    }

第二:

 class test2
    {
        public test2()
        {

        }

        public void OutPut(Delegate d)
        {
            // Error !!!
            bool a = d();
            Console.WriteLine(a.ToString());
        }
    }

最后:

 internal delegate bool Del();
    class Program
    {

        static void Main(string[] args)
        {
            Del d = test1.Input;
            test2 t2=new test2();
            t2.OutPut(d);
            Console.ReadKey();
        }
    }

1 个答案:

答案 0 :(得分:2)

public void OutPut(Delegate d)

这会使默认代理不是您要查找的代理。您出于以下原因明确声明了Del

public void OutPut(Del d) 

然而,代表们是sooo 2001.使用Func<T>以获得更好的可读性:

public void OutPut(Func<bool> d)