1
我想將一些C#代碼移到VB中。當我通過Telerik的翻譯器運行C#代碼時,它將吐出下面的VB代碼。 VB代碼不會編譯並給出「a.Remove()」部分並出錯。該錯誤是C#Linq語法比較-vs- VB Linq語法
所以VB代碼工作一樣的C#「表達式不會產生一個值」
將正確的代碼是什麼去掉「腳本」和「a」標籤碼?
我原來的C#代碼:
public static HtmlDocument RemoveUselessTags(HtmlDocument doc)
{
doc.DocumentNode.Descendants()
.Where(a => a.Name == "script" || a.Name == "a")
.ToList()
.ForEach(a => a.Remove());
return doc;
}
我 「翻譯」 VB代碼:
Public Shared Function RemoveUselessTags(doc As HtmlDocument) As HtmlDocument
doc.DocumentNode.Descendants()
.Where(Function(a) a.Name = "script" OrElse a.Name = "a")
.ToList()
.ForEach(Function(a) a.Remove())
Return doc
End Function
只要首先使用真正的foreach循環(兩種語言)。它提高了代碼的可讀性,消除了語法中不必要的複雜性(例如碰巧發生的特殊情況)並提高了性能(內存佔用從O(n)到O(1)不是完全不必要的創建一個你永遠不會使用的列表並存儲其中的所有項目)。 – Servy
你的代碼翻譯是完美的,除了'OrElse'應該是'Or'。 – jdweng
@jdweng - 不,OrElse是C#中短路「||」運算符的VB等價物。 –