1
私のC#コードをVBに移動しようとしています。 Telerikの翻訳者からC#コードを実行すると、以下のVBコードが吐き出されます。 VBコードはコンパイルされず、 "a.Remove()"セクションにエラーが返されます。エラーは、VBのコードは、C#と同じように動作しますので、正しいコードは「スクリプト」と「」タグを削除することです何C#Linq構文の比較-vs- VB Linq構文
を「式は値を生成しません」
ですコード?
私のオリジナルの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相当語です。 –