委托和事件之间的区别是什么?两者不都持有可以执行的函数的引用吗?

我对c#比较陌生,我想知道什么时候应该适当地使用委托。 它们在事件声明中被广泛使用,但是什么时候应该在我自己的代码中使用它们,为什么它们有用?为什么不用别的东西呢?

我也想知道什么时候我必须使用委托,我没有其他的选择。

谢谢你的帮助!

编辑:我认为我在这里找到了委托的必要用途

弱引用似乎在Swift中不起作用,除非协议声明为@objc,这是我不希望在纯Swift应用程序中使用的。

这段代码给出了一个编译错误(weak不能应用于非类类型MyClassDelegate):

class MyClass {
  weak var delegate: MyClassDelegate?
}

protocol MyClassDelegate {
}

我需要用@objc作为协议的前缀,然后它就可以工作了。

问:完成弱委托的“纯”Swift方式是什么?

我知道委托是如何工作的,也知道如何使用它们。

但是我如何创建它们呢?

通过真实的例子及其使用,有人能帮助我理解吗

我们什么时候需要Func<T,..>代表我们什么时候需要行动<T>代表?何时需要谓词<T>委托?

我有几个方法都具有相同的参数类型和返回值,但名称和块不同。我想将要运行的方法的名称传递给另一个将调用传递的方法的方法。

public int Method1(string)
{
    // Do something
    return myInt;
}

public int Method2(string)
{
    // Do something different
    return myInt;
}

public bool RunTheMethod([Method Name passed in here] myMethodName)
{
    // Do stuff
    int i = myMethodName("My String");
    // Do more stuff
    return true;
}

public bool Test()
{
    return RunTheMethod(Method1);
}

这段代码不起作用,但这是我正在尝试做的。我不明白的是如何编写RunTheMethod代码,因为我需要定义参数。

我理解lambdas和Func和Action委托。但表情 我头疼不已。

在什么情况下,你会使用表达式<Func<T>>而不是普通的旧Func<T>?