如何在列表所在的方法之外使用foreach显示列表中的项目(C#)

时间:2018-03-09 19:37:36

标签: c# list methods foreach

因此,我在C#中创建了一个程序,该程序将读取用户提供的收入和输出,并将它们存储在2个列表中。请求时,程序必须显示列表中存储的值。问题是,列表位于一个方法中,用于显示值的foreach是在另一个方法中,每次我尝试调用列表的名称时,编译器都会对我说:"名称在当前上下文中不存在"。欢迎任何帮助。

这是创建列表的方法:

public void ListIncome()
{
    Console.Clear();
    Console.Write("Income: ");
    List<double> Income = new List<double>();
    Income.Add(Convert.ToDouble(Console.ReadLine()));
}

这是显示列表的方法:

public void ShowList()
{
    foreach (double value in Income)
    {
        Console.WriteLine(value);
    }
    Console.ReadKey();
}

2 个答案:

答案 0 :(得分:1)

这是因为您的Income变量不在ListIncome方法范围内,因此,您需要将其移至类级别范围,以便其他成员方法可以访问。

您需要创建一个字段列表,以便在填充它时可以在方法外部访问它:

public class YourClass
{

   List<double> Income = new List<double>(); // field added

   public void ListIncome()
   {
      Console.Clear();
      Console.Write("Income: ");
      Income.Add(Convert.ToDouble(Console.ReadLine()));
   }

  public void ShowList()
  {
     foreach (double value in Income)
     {
         Console.WriteLine(value);
     }
     Console.ReadKey();
  }

}

现在它应该可以在这些方法中访问,并且您的方法也将在同一个类中,以便本案例能够像上面那样工作。

答案 1 :(得分:1)

您不能从另一个方法调用封装在方法中的变量,因此,您必须在类级别声明它,以便它的所有方法都可以访问所述变量

private List<double> Income = new List<double>();

public void ListIncome()
{
    Console.Clear();
    Console.Write("Income: ");
    Income.Add(Convert.ToDouble(Console.ReadLine()));
}

public void ShowList()
{
    foreach (double value in Income)
    {
        Console.WriteLine(value);
    }
    Console.ReadKey();
}

所以你理解得更好

A是一个局部变量。它不能从另一种方法访问,只能在method()

中访问
public void method()
{
   int A = 0;
}

A现在是一个类级变量,类的所有方法都可以访问它,因为它在类中声明而不是封装在方法中(仅限于方法)

public class SomeClass
{
    int A = 0; 

    public method()
    {
        int X = A / 5;  
    }
}