簡體   English   中英

需要幫助將此代碼段從c#轉換為vb

[英]Need help converting this code snippet from c# to vb

嘿,我已經嘗試了所有的在線代碼轉換器,但沒有一個在這方面工作。 有人可以向我解釋如何將其篡改為vb.net嗎?

yahoo.OnBuddyAddYouRequest += delegate(object sender, string buddy, string requestMessage, ref bool bAccept)
{
    object[] inVar = { sender, buddy, requestMessage,bAccept };
    this.Invoke(new OnBuddyAddYouRequestYahooEventHandler(OnBuddyAddYouRequest), inVar);
    bAccept = (bool)inVar[3];
};

將內部代碼更改為單獨的方法:

private void buddyAddYouRequest(object sender, string buddy,
        string requestMessage, ref bool bAccept)
{
    object[] inVar = { sender, buddy, requestMessage, bAccept };
    this.Invoke(new OnBuddyAddYouRequestYahooEventHandler(OnBuddyAddYouRequest), inVar);
    bAccept = (bool)inVar[3];
}

然后將您引用的行更改為:

yahoo.OnBuddyAddYouRequest += buddyAddYouRequest;

然后,您可以通過代碼轉換器運行它以將其轉換為VB.NET。

但是,我應該指出代碼沒有意義。 它似乎以一種不必要的回旋方式調用了現有方法OnBuddyAddYouRequest 我意識到作者可能正試圖克服多線程問題; 在這種情況下,您可以更簡單地編寫它(並且類型安全),如下所示:

private void buddyAddYouRequest(object sender, string buddy,
        string requestMessage, ref bool bAccept)
{
    bool bAcceptCopy = bAccept;
    this.Invoke(new Action(() => OnBuddyAddYouRequest(sender, buddy,
                                 requestMessage, ref bAcceptCopy)));
    bAccept = bAcceptCopy;
}

// ...

yahoo.OnBuddyAddYouRequest += buddyAddYouRequest;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM