編集: 再帰的にしようとしています: Form1 の上部に:
List<string> webSites = new List<string>();
List<string> csFiles = new List<string>();
コンストラクターには次のものがあります。
webCrawler(url, 2);
次に、getLinks 関数があります。
private void getLinks()
{
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
var href = link.Attributes["href"].Value;
richTextBox1.Text += href + Environment.NewLine;
webSites.Add(href);
}
}
private List<string> test(string url, int levels)
{
doc = hw.Load(url);
getLinks();
if (levels == 0)
{
return csFiles;
}
else
{
for (i = 0; i < webSites.Count(); i++)
{
string t = webSites[i];
var f = levels * test(url, levels - 1);
}
}
return csFiles;
}
webSites と csFiles はどちらも List で、levels は int です。問題は、次の行にありvar f = levels * test(url, levels - 1);
ます: 右側にエラーが表示されます: エラー演算子 '*' は、タイプ 'int' および 'System.Collections.Generic.List のオペランドに適用できません。
どうすれば修正できますか?
関数テストでは、関数 getLinks() も呼び出します。各サイトから .cs ファイルのみを取り出す cs ファイル用の関数も作成する必要があり、最後にテスト関数で csFiles リストを返す必要があります。