你以前肯定至少写过一个回调函数。回调函数是一些不可以直接去调用的函数。我们可以使用指针在一些能直接调用的库代码中调用这些回调函数,将回调函数的地址作为参数来传递。你所写的这种使用回调参数的代码被调用的几率不会太高,但也不会非常地低,因为这也是一种常见的使用方式。
当访问一个庞大的或不透明的数据结构时,这种回调函数只会被调用一次。通常情况下,在从一个列表中选择某些项目或告诉库代码何时停止循环的过程中,你所写的回调函数就会被多次调用。
你可能愿意去写这种带有强类型参数的回调代码。那可以确保非空的参数是一个指针并且指向的是带有正确原型的方法,而不是指向其他的原型或数据。
当在.NET代码中使用回调参数时,你的第一反应可能是使用代理,它类似于C++或Delphi中的强类型方法指针。你可以用接口来代替回调参数进行执行来避免使用代理。接口和代理都有一个相同的特征,就是允许你使用正确的原型来调用某个方法,而不需要知道是哪个对象执行了该方法,也不需要知道是哪个实例被绑定到该调用上,甚至不需要知道是哪个实例被绑定到你所调用的方法名上。