C# 正确使用Return关键字
我对编程相当陌生,我有一个问题。我想获得网络上的计算机列表,我已经成功地做到了这一点,然后我可以通过使用.Count()获得有多少台计算机……问题是,在我的完整代码中有几个地方我想引用这个数字,每次我尝试使用c时,它都告诉我变量在其上下文中不存在。我试图建立自己的公开方法,但它要求我在搜索后提交一份适当的回报。我还是搞不懂。。有人能给我指出正确的方向吗?多谢各位C# 正确使用Return关键字,c#,C#,我对编程相当陌生,我有一个问题。我想获得网络上的计算机列表,我已经成功地做到了这一点,然后我可以通过使用.Count()获得有多少台计算机……问题是,在我的完整代码中有几个地方我想引用这个数字,每次我尝试使用c时,它都告诉我变量在其上下文中不存在。我试图建立自己的公开方法,但它要求我在搜索后提交一份适当的回报。我还是搞不懂。。有人能给我指出正确的方向吗?多谢各位 public void ComputersOnNetwork() { List<string> list = new
public void ComputersOnNetwork()
{
List<string> list = new List<string>();
using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach (DirectoryEntry computer in computers.Children)
{
if ((computer.Name != "Schema"))
{
list.Add(computer.Name);
}
}
foreach (string s in list)
{
int c = list.Count();
return c;
}
public void ComputersOnNetwork()
{
列表=新列表();
使用(DirectoryEntry root=newdirectoryEntry(“WinNT:”))
{
foreach(计算机中的DirectoryEntry计算机。子对象)
{
if((computer.Name!=“Schema”))
{
列表.添加(计算机.名称);
}
}
foreach(列表中的字符串s)
{
int c=list.Count();
返回c;
}
您的方法中可能缺少return
语句。您需要有一个返回类型(在本例中可能是整数类型,用于返回计算机数)
您的方法中可能缺少
return
语句。您需要有一个返回类型(在本例中可能是整数类型,用于返回计算机数)
不需要进行最后的循环-如果列表包含所有计算机,则应该这样做:
public void ComputersOnNetwork()
{
List<string> list = new List<string>();
using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach (DirectoryEntry computer in computers.Children)
{
if ((computer.Name != "Schema"))
{
list.Add(computer.Name);
}
}
}
return list.Count();
}
public void ComputersOnNetwork()
{
列表=新列表();
使用(DirectoryEntry root=newdirectoryEntry(“WinNT:”))
{
foreach(计算机中的DirectoryEntry计算机。子对象)
{
if((computer.Name!=“Schema”))
{
列表.添加(计算机.名称);
}
}
}
返回list.Count();
}
Return语句将在您点击它们时立即停止函数的执行,因此您的最终for循环将只运行一次
即使没有return语句,您也会遇到问题,因为
c
是在循环中声明的,它会超出范围,这就是为什么您以后无法在代码中引用它。在循环中声明变量时需要小心,它们会在每次迭代和l尽管您的代码可能会编译,但跟踪此类错误可能很棘手。没有必要进行最后的循环-如果列表包含所有计算机,则应该这样做:
public void ComputersOnNetwork()
{
List<string> list = new List<string>();
using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach (DirectoryEntry computer in computers.Children)
{
if ((computer.Name != "Schema"))
{
list.Add(computer.Name);
}
}
}
return list.Count();
}
public void ComputersOnNetwork()
{
列表=新列表();
使用(DirectoryEntry root=newdirectoryEntry(“WinNT:”))
{
foreach(计算机中的DirectoryEntry计算机。子对象)
{
if((computer.Name!=“Schema”))
{
列表.添加(计算机.名称);
}
}
}
返回list.Count();
}
Return语句将在您点击它们时立即停止函数的执行,因此您的最终for循环将只运行一次
即使没有return语句,您也会遇到问题,因为
c
是在循环中声明的,它会超出范围,这就是为什么您以后无法在代码中引用它。在循环中声明变量时需要小心,它们会在每次迭代和l尽管您的代码可能会编译,但跟踪此类错误可能会很棘手。您必须有一个返回类型,并且您应该使用count变量,而不是将其添加到列表中然后返回计数(另外,为什么要这样迭代列表?您不需要这样做)
始终以逻辑方式阅读代码,并查看操作是否在逻辑上正确执行
public int ComputersOnNetwork()
{
int count = 0;
using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach (DirectoryEntry computer in root.Children)
{
if ((computer.Name != "Schema"))
{
count++;
}
}
return count;
}
或者,您可以使用LINQ创建一个简短版本:
public int ComputersOnNetwork()
{
using (var root = new DirectoryEntry("WinNT:"))
{
return root.Children.Cast<DirectoryEntry>().Count(x => x.Name != "Schema");
}
}
public int ComputersOnNetwork()
{
使用(var root=newdirectoryEntry(“WinNT:”))
{
返回root.Children.Cast().Count(x=>x.Name!=“Schema”);
}
}
您必须有一个返回类型,并且您应该使用count变量,而不是将其添加到列表中然后返回计数(还有,为什么要这样迭代列表?您不需要这样做)
始终以逻辑方式阅读代码,并查看操作是否在逻辑上正确执行
public int ComputersOnNetwork()
{
int count = 0;
using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach (DirectoryEntry computer in root.Children)
{
if ((computer.Name != "Schema"))
{
count++;
}
}
return count;
}
或者,您可以使用LINQ创建一个简短版本:
public int ComputersOnNetwork()
{
using (var root = new DirectoryEntry("WinNT:"))
{
return root.Children.Cast<DirectoryEntry>().Count(x => x.Name != "Schema");
}
}
public int ComputersOnNetwork()
{
使用(var root=newdirectoryEntry(“WinNT:”))
{
返回root.Children.Cast().Count(x=>x.Name!=“Schema”);
}
}
结尾不需要foreach循环。您从未使用变量“s”,因此浪费了处理时间
若要获取所需内容,请更改方法以重新运行int而不是void,然后返回list.Count
public int ComputersOnNetwork()
{
List<string> list = new List<string>();
using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach (DirectoryEntry computer in computers.Children)
{
if ((computer.Name != "Schema"))
{
list.Add(computer.Name);
}
}
int c = list.Count;
return c;
}
}
您不需要在最后使用foreach循环。您从未使用变量“s”,因此这是浪费处理时间 若要获取所需内容,请更改方法以重新运行int而不是void,然后返回list.Count
public int ComputersOnNetwork()
{
List<string> list = new List<string>();
using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach (DirectoryEntry computer in computers.Children)
{
if ((computer.Name != "Schema"))
{
list.Add(computer.Name);
}
}
int c = list.Count;
return c;
}
}
请发布您正在使用的代码。您可以发布您尝试过的代码的相关部分吗?当您没有真正迭代列表中的元素时,为什么要使用
foreach
?另外,当您只需要计数时,为什么要保存到列表中?请发布您正在使用的代码。您可以发布您拥有的代码的相关部分吗ied?当你没有真正迭代列表中的元素时,为什么要使用foreach
?另外,当你只需要计数时,为什么要保存到列表中?很抱歉,没有立即将代码保存到列表中。仍然在使用如何导航站点:)@CoreyDeising:我根据你问题的更新更新了我的答案。totalItems.count
should是列表。Count
@grampage:是的。我第一次发布时使用了一个同名变量。谢谢。现在更正它。@Shyju