我在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();
谢谢。
事实上,您不是要尝试提高一个事件,而是 subscribe 到一个。不幸的是,将代码转换为vb.net时遇到的智能错误错误有些误导。
在事件方面,C#的+=
操作员等于 Delegate.Combine()
,它将另一个委托给事件的订阅者列表(事件处理程序列表)。A Delegate
只是持有另一种方法的指针的类。代表们用于提供一种简单的方法来通过代码传递和调用方法。
引用文档:
+=
运算符还用于指定将响应事件调用的方法;这样的方法称为事件处理程序。在这种情况下,+=
操作员的使用称为订阅事件。。
要订阅vb.net中的事件,您必须使用 AddHandler
语句,哪个语法为:
AddHandler <event to subscribe to>, <method to be invoked when the event occurs>
因此:
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及以下...我也想在那里更清楚地表明哪些陈述是一起进行的。