【发布时间】:2011-12-14 15:45:18
【问题描述】:
我正在学习 VB.NET 中的委托,但对委托类型感到困惑。在阅读委托时,我了解到委托是一种数据类型,可以引用具有特定类型签名的方法。因此,就像字符串可以引用字符一样,委托可以引用一个方法(例如),该方法将整数作为输入并返回整数作为输出。但在与代表们玩耍时,我发现情况并非如此。下面的代码编译并运行——即使我不遵守我的委托签名中的“打字”。我很困惑。我错过了什么吗?
Public Delegate Function myDelegate(ByVal i As Integer) As Integer' int in, rtrn int
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim md As myDelegate 'should be of type int in, rtrn int
md = New myDelegate(AddressOf squared) 'allows assign to string in, string out
MsgBox(md("3"))
End Sub
Private Function squared(ByVal i As String) As String
Return i * i
End Function
【问题讨论】:
-
你有
Option Strict On吗? -
我要问和@SLaks一样的问题...
-
Option Strict
On,在选项对话框中将其更改为 VB 项目的默认值:msdn.microsoft.com/en-us/library/t0k7484c.aspx -
啊哈!做到了。谢谢。
-
注意微软 - 请默认
Option Strict Oninn Visual Studio。 VB.NET 开发人员注意 - 确保您默认Option Strict On(并为所有现有项目打开它)
标签: vb.net programming-languages delegates