-3

我在 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();

谢谢。

4

1 回答 1

-1

事实上,您并不是要发起一个事件,而是订阅一个事件。不幸的是,将该代码转换为 VB.NET 时出现的 IntelliSense 错误有点误导。

在事件方面,C# 的+=运算符等于Delegate.Combine()将另一个委托添加到事件的订阅者列表(事件处理程序列表)。ADelegate只是一个持有另一个方法的指针的类。委托用于提供一种通过代码传递和调用方法的简单方法。

引用文档

+=操作符还用于指定响应事件而调用的方法;此类方法称为事件处理程序。在此上下文中使用+=运算符称为订阅事件

要订阅 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 及更低版本......我也喜欢将它放在那里以更清楚地说明哪些语句可以一起使用,哪些不可以。

于 2017-08-29T19:34:52.597 回答