草庐IT

def_delegate

全部标签

C# - 我怎样才能 "overload"委托(delegate)?

首先,我阅读了一些论坛和MSDN中的帮助,它们都说代理不能重载。现在,我想要这样的东西:publicdelegatevoidOneDelegate();publicdelegatevoidOneDelegate(paramsobject[]a);publicvoidDoNothing(paramsobject[]a){}publicvoidDoSomething(){/*dosomething*/}privateOneDelegatesomeFunction;someFunction=newOneDelegate(DoSomething);someFunction=newOneDele

C# - 我怎样才能 "overload"委托(delegate)?

首先,我阅读了一些论坛和MSDN中的帮助,它们都说代理不能重载。现在,我想要这样的东西:publicdelegatevoidOneDelegate();publicdelegatevoidOneDelegate(paramsobject[]a);publicvoidDoNothing(paramsobject[]a){}publicvoidDoSomething(){/*dosomething*/}privateOneDelegatesomeFunction;someFunction=newOneDelegate(DoSomething);someFunction=newOneDele

c# - 如果委托(delegate)是不可变的,为什么我可以做 x += y 这样的事情?

阅读C#InDepth,第2版,第2.1.2节关于合并和删除委托(delegate)。小节标题指出“委托(delegate)是不可变的”并且“关于它们的任何内容都不能更改”。不过,在下一段中,它讨论了使用像这样的结构x+=y;其中x和y是兼容委托(delegate)类型的变量。我不是刚刚更改了x吗?或者当我这样做时(即立即)处置x时,不变性部分是否处理? 最佳答案 这就像做:stringx="x";stringy="y";x+=y;字符串也是不可变的。上面的代码没有更改字符串objects-它将x设置为不同的值。您需要区分变量和对象

c# - 如果委托(delegate)是不可变的,为什么我可以做 x += y 这样的事情?

阅读C#InDepth,第2版,第2.1.2节关于合并和删除委托(delegate)。小节标题指出“委托(delegate)是不可变的”并且“关于它们的任何内容都不能更改”。不过,在下一段中,它讨论了使用像这样的结构x+=y;其中x和y是兼容委托(delegate)类型的变量。我不是刚刚更改了x吗?或者当我这样做时(即立即)处置x时,不变性部分是否处理? 最佳答案 这就像做:stringx="x";stringy="y";x+=y;字符串也是不可变的。上面的代码没有更改字符串objects-它将x设置为不同的值。您需要区分变量和对象

c# - 通用接口(interface)方法的开放委托(delegate)

我正在尝试创建一个openinstancedelegate对于通用接口(interface)方法,但我一直收到NotSupportedException。这是不会运行的简化代码:interfaceIFoo{voidBar(Tj);}classFoo:IFoo{publicvoidBar(Tj){}}staticvoidMain(string[]args){varbar=typeof(IFoo).GetMethod("Bar").MakeGenericMethod(typeof(int));varx=Delegate.CreateDelegate(typeof(Action),null,

c# - 通用接口(interface)方法的开放委托(delegate)

我正在尝试创建一个openinstancedelegate对于通用接口(interface)方法,但我一直收到NotSupportedException。这是不会运行的简化代码:interfaceIFoo{voidBar(Tj);}classFoo:IFoo{publicvoidBar(Tj){}}staticvoidMain(string[]args){varbar=typeof(IFoo).GetMethod("Bar").MakeGenericMethod(typeof(int));varx=Delegate.CreateDelegate(typeof(Action),null,

c# - 为事件定义一个空的委托(delegate)主体是一个好习惯吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Isthereadownsidetoaddingananonymousemptydelegateoneventdeclaration?为事件定义一个空的委托(delegate)主体是否是一种好习惯,这样您就不必担心引发没有事件处理程序的事件?(无需检查事件是否为空)。喜欢下面的代码:publiceventEventHandlerLoadedData=delegate{};

c# - 为事件定义一个空的委托(delegate)主体是一个好习惯吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Isthereadownsidetoaddingananonymousemptydelegateoneventdeclaration?为事件定义一个空的委托(delegate)主体是否是一种好习惯,这样您就不必担心引发没有事件处理程序的事件?(无需检查事件是否为空)。喜欢下面的代码:publiceventEventHandlerLoadedData=delegate{};

c# - 为什么不能将 .NET 委托(delegate)声明为静态的?

当我尝试编译以下内容时:publicstaticdelegatevoidMoveDelegate(Actorsender,MoveDirectionargs);我收到错误消息:“修饰符‘static’对此项无效。”我在单例中实现了这个,有一个单独的类调用委托(delegate)。问题是,当我在另一个类中使用单例实例调用委托(delegate)(从标识符,而不是类型)时,无论出于何种原因,我都不能这样做,即使我声明委托(delegate)是非静态的。显然,当且仅当委托(delegate)是静态的时,我才能直接通过类型引用它。这背后的原因是什么?我正在使用MonoDevelop2.4.2。

c# - 为什么不能将 .NET 委托(delegate)声明为静态的?

当我尝试编译以下内容时:publicstaticdelegatevoidMoveDelegate(Actorsender,MoveDirectionargs);我收到错误消息:“修饰符‘static’对此项无效。”我在单例中实现了这个,有一个单独的类调用委托(delegate)。问题是,当我在另一个类中使用单例实例调用委托(delegate)(从标识符,而不是类型)时,无论出于何种原因,我都不能这样做,即使我声明委托(delegate)是非静态的。显然,当且仅当委托(delegate)是静态的时,我才能直接通过类型引用它。这背后的原因是什么?我正在使用MonoDevelop2.4.2。