C# – > VB.Net中的RaiseEvent
我在VB.Net中使用TweetInvi很开心,不幸的是我将此代码转换为VB.Net存在问题。 我还是初学者,我试图获得有关RaiseEvent的一些信息,但我无法做到。 这是代码。 我想在按钮事件中运行它:
var stream = Stream.CreateFilteredStream(); stream.AddTrack("tweetinvi"); stream.MatchingTweetReceived += (sender, args) => { Console.WriteLine("A tweet containing 'tweetinvi' has been found; the tweet is '" + args.Tweet + "'"); }; stream.StartStreamMatchingAllConditions();
谢谢。
事实上,你不是要提出一个事件,而是订阅一个事件。 遗憾的是,将代码转换为VB.NET时出现的IntelliSense错误有点误导。
就事件而言,C#的+=
运算符等于Delegate.Combine()
,它将另一个委托添加到事件的订阅者列表(事件处理程序列表)。 Delegate
只是一个包含另一个方法指针的类。 委托用于提供一种简单的方法来传递和通过代码调用方法。
引用文档 :
+=
运算符还用于指定将响应事件而调用的方法; 这种方法称为事件处理程序。 在此上下文中使用+=
运算符称为订阅事件 。
要订阅VB.NET中的事件,您必须使用AddHandler
语句 ,其语法是:
AddHandler ,
从而:
AddHandler stream.MatchingTweetReceived, _ Sub(sender As Object, args As EventArgs) Console.WriteLine("A tweet containing 'tweetinvi' has been found; the tweet is '" & args.Tweet & "'") End Sub
– 末尾的下划线( _
)只是告诉编译器继续下一行的一种方式。 在较新版本的VB.NET中,这不是必需的,但是有些人仍然使用VS 2008及以下…我也希望在那里使它更清楚哪些语句在一起而哪些不一致。