.net – 委托签名不匹配时没有错误
发布时间:2020-12-17 07:21:27 所属栏目:百科 来源:网络整理
导读:我在代码中定义了以下类和委托(为简洁起见,还有许多其他行被删除). Public Delegate Sub TimerCallback(canceled As Boolean)Public Class Timer Implements TimerManager.ITimer Public Sub New(delay As Integer,callback As TimerCallback) mState = Time
我在代码中定义了以下类和委托(为简洁起见,还有许多其他行被删除).
Public Delegate Sub TimerCallback(canceled As Boolean) Public Class Timer Implements TimerManager.ITimer Public Sub New(delay As Integer,callback As TimerCallback) mState = TimerState.Setup mCallback = callback CType(TimerManager.Instance,TimerManager.ITimerManager).RegisterTimer(Me,delay) End Sub End Class 当我使用以下代码创建一个新的计时器实例时,我不会得到编译错误,即使匿名函数的签名与委托的签名不匹配(它缺少“取消为布尔值”参数). Dim timer As New Timer(Me.CookTime,Sub() Dim cooked As FoodBase = CType(Activator.CreateInstance(SuccessfulResult),FoodBase) player.GetBackpack.AddItem(cooked) End Sub) 我希望以这种方式实例化计时器时会出现编译错误,有人可以解释为什么编译时没有错误吗?我可以设置任何可能导致编译错误的选项吗?我在项目属性中有选项显式,选项严格打开和选项推断.事实上,忘记包含取消的参数太容易了. 解决方法
是的.没关系 – 编译器可以生成一个匿名方法,知道所需的签名,而不是使用它给出的参数.因此编译器生成的方法将具有参数 – 它只是不会使用它.您可以使用委托{…}在C#中执行相同的操作.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- iphone – toSharedViewController不能重用现有的控制器
- vb.net – 如何以编程方式将网站添加到兼容性列表Internet
- 系统自带JSonObject解析
- ruby-on-rails-4 – Rails 4:如何从数据库中删除或删除(连
- 更改ORACLE归档路径及归档模式
- schema 和xml文件解析的组件Parse-XML报错的问题
- Swift - 各种手势检测大全(UIGestureRecognizer及其子类)
- sqlite3里类似top的用法
- cocos2dx3.0rc导出自定义类到lua的方法详细步骤
- ios – 安装应用程序时,请在选项字典中包含kCFBundleIdenti