了解委托的实现

本文关键字:实现 了解 | 更新日期: 2023-09-27 18:19:16

我一直在了解代表的优势。我已经读到它可以用作将方法作为参数传递的工具。例如,假设您有一个将比较方法作为参数调用的排序方法。因此,您可以选择所需的比较方法作为调用方。我知道并理解整个逻辑,但是当我尝试根据这些知识创建一个简单的应用程序时,它不起作用。在这里,我有 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();
        }
    }

了解委托的实现

public void OutPut(Delegate d)

这将采用不是您要查找的默认委托。出于以下原因,您明确声明了Del

public void OutPut(Del d) 

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

public void OutPut(Func<bool> d)