我有一个列表<字符串的功能>它得到字符串,int 我如何使用它来工作
本文关键字:字符串 int 何使用 工作 列表 功能 有一个 | 更新日期: 2023-09-27 18:33:58
编辑:我试图使递归:在 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;
}
网站和csFile都是List,级别是int。问题是在线:var f = levels * test(url, levels - 1);
在右侧,im 收到错误:错误运算符"*"不能应用于类型为"int"和"System.Collections.Generic.List "的操作数
我该如何解决它?
在函数测试中,我还调用函数getLinks()我还需要为 cs 文件创建一个函数,该函数只会从每个站点取出.cs文件,最后在测试函数中我需要返回 csFiles 列表。
在行中: "var f = levels * test(url, levels - 1);
f 设置为等于 "levels" a int 的结果,以及方法 "test(url, levels -1)" 的结果。
方法 "test(url, levels - 1)" 的结果是字符串类型的列表。
这意味着您正在尝试将整数和列表相乘。
您可以简单地使用 .计数或 .长度。。。
该行应为:"var f = levels * test(url, levels - 1)。计数();"
感觉就像 100 级 cs 课程的家庭作业,但假设目前不是,我将把它作为一种方法:
public static List<string> CrawlWithDepth(string url, int depth)
{
var ret = new List<string>();
var linksFromPage = GetLinks(url);
ret.AddRange(linksFromPage);
if (depth > 0)
{
foreach (var childLink in linksFromPage)
{
var childCrawlResults = CrawlWithDepth(childLink, depth - 1);
ret.AddRange(childCrawlResults);
}
}
}
private static List<string> GetLinks(string url)
{
var ret = new List<string>();
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
var href = link.Attributes["href"].Value;
ret.Add(href);
}
return ret;
}