首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在.NET 2.0中,如何将委托分配给委托

在.NET 2.0中,如何将委托分配给委托
EN

Stack Overflow用户
提问于 2010-05-08 04:51:40
回答 2查看 698关注 0票数 1

我只是在how to pass a generic delegate as a parameter上找到答案。谢谢你的帮助。现在我需要知道如何将委托分配给另一个委托声明。这可以做到吗?

代码语言:javascript
运行
复制
Public Class MyClass  
    Public Delegate Function Getter(Of TResult)() As TResult    

    ''#the following code works.
    Public Shared Sub MyMethod(Of TResult)(ByVal g As Getter(Of TResult))
        ''# I want to assign Getter = g  ''#how do you do it.
    End Sub
End Class

请注意,Getter现在是私有的。如何分配Getter =G

当我尝试Getter =g‘时,我得到的类型参数太少,编译错误。当我尝试Getter(Of TResult) =g’时,我得到的Getter是一个类型,不能用作表达式。

你是怎么做到的?

赛斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-08 05:02:17

你现在还不能。你的Getter(Of TResult)()委托不是一个可以赋值的变量。它更像是一个类定义。因此,首先还需要声明一个可以使用的委托变量:

代码语言:javascript
运行
复制
Public Class MyClass  
    Public Delegate Function Getter(Of TResult)() As TResult    

    Private MyGetter As Getter(Of TResult)

    Public Shared Sub MyMethod(Of TResult)(ByVal g As Getter(Of TResult))
        MyGetter = g  
    End Sub
End Class

注意,泛型类型仍然有一个问题,因为您为MyMethod(Of TResult)声明的泛型类型没有连接到我刚刚在这里添加的委托变量的类型。您必须使整个类成为泛型,而不仅仅是方法才能正常工作。

我还想知道为什么不直接使用现有的Func(Of T)委托?

票数 1
EN

Stack Overflow用户

发布于 2010-05-08 04:58:39

我不太清楚您想要做什么--在您的代码中,Getter是一个类型(委托类型)的名称,而不是您可以为其赋值的类的实例字段。

您是否打算声明一个事件(其他用户可以向其注册处理程序)?如果是这种情况,请参见MSDN上的示例this article

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2791610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档