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



因此,我正在用 C# 创建一个程序,该程序将读取用户提供的 Income 和 Outgo,并将它们存储在 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();
}

这是因为您的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();
  }
}

现在它应该可以在这些方法中访问,并且您的方法也将在同一个类中,以便在这种情况下像上面一样工作。

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

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;  
    }
}

最新更新