【发布时间】:2017-05-15 17:45:36
【问题描述】:
我正在使用 Windows 窗体并使用线程安全概念来设置主线程控件的值,这里我有两个委托,一个用于不带参数,另一个用于传递参数,但我发现不可能这样做,因为它说
表单已经包含 StringArgReturningVoidDelegate 的定义
委托声明
delegate string StringArgReturningVoidDelegate();
delegate void StringArgReturningVoidDelegate(string text);
【问题讨论】:
-
AFAIR 使用
delegate关键字是一个 (c# ?) 编译器功能,使用时它实际上会创建一个普通的 C# 类型:class StringArgReturningVoidDelegate,然后这个类被事件和实际用作类型持有对方法的引用的变量。这就是为什么你不能有相同的名字。快速修复:使用其他名称。 -
当我使用 Class 作为委托名称时,如何重命名委托?
-
您不必使用与包含类型名称相同的名称。其实他们不必属于类,你可以直接define delegate in the namespace。 Naming delegates 实际上是一个主题。目前有
Action<>和Func<>泛型来定义方法指针和EventHandler<>用于事件。我什至不确定是否需要继续使用delegate关键字。换句话说,不要定义委托类型,首先使用Func<string>,其次使用Action<string>。
标签: c#