Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在列表所在的方法(C#)之外使用foreach显示列表上的项_C#_List_Methods_Foreach - Fatal编程技术网

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

如何在列表所在的方法(C#)之外使用foreach显示列表上的项,c#,list,methods,foreach,C#,List,Methods,Foreach,因此,我正在用C#创建一个程序,它将读取用户提供的收入和支出,并将它们存储在两个列表中。当被请求时,程序必须显示列表中存储的值。问题是,列表位于一个方法中,用于显示值的foreach位于另一个方法中,每次我尝试调用列表的名称时,编译器都对我说:“该名称在当前上下文中不存在”。欢迎任何帮助 这是创建列表的方法: public void ListIncome() { Console.Clear(); Console.Write("Income: "); List<dou

因此,我正在用C#创建一个程序,它将读取用户提供的收入和支出,并将它们存储在两个列表中。当被请求时,程序必须显示列表中存储的值。问题是,列表位于一个方法中,用于显示值的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
方法范围内,所以您需要将其移动到类级范围,以便其他成员方法可以访问

您需要创建列表a字段,以便在填充它的方法之外也可以访问它:

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

}
公共类您的类
{
列表收入=新列表();//已添加字段
公共收入()
{
Console.Clear();
控制台。写入(“收入:”);
Income.Add(Convert.ToDouble(Console.ReadLine());
}
公开作废展示清单()
{
foreach(收入的双重价值)
{
控制台写入线(值);
}
Console.ReadKey();
}
}

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

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

您需要创建列表a字段,以便在填充它的方法之外也可以访问它:

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

}
公共类您的类
{
列表收入=新列表();//已添加字段
公共收入()
{
Console.Clear();
控制台。写入(“收入:”);
Income.Add(Convert.ToDouble(Console.ReadLine());
}
公开作废展示清单()
{
foreach(收入的双重价值)
{
控制台写入线(值);
}
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
现在是一个类级变量,该类的所有方法都可以访问它,因为它在类中声明,而不是封装在方法中(仅限于方法)

public class SomeClass
{
    int A = 0; 

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

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

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
现在是一个类级变量,该类的所有方法都可以访问它,因为它在类中声明,而不是封装在方法中(仅限于方法)

public class SomeClass
{
    int A = 0; 

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

您正在
ListIncome()
方法中创建列表,一旦该方法将用户输入添加到列表中,它将立即被标记为垃圾收集(意味着它将被销毁)。您的列表应该是类成员(理想情况下是属性)。这样,所有方法都可以访问它。我建议您学习C#课程的介绍,我认为您可以从基础知识的概述中获益。您正在
ListIncome()
方法中创建列表,一旦该方法将用户输入添加到列表中,它将立即标记为垃圾收集(意味着它将被销毁)。您的列表应该是类成员(理想情况下是属性)。这样,所有方法都可以访问它。我建议你参加C#课程的介绍,我认为你可以从基础知识的概述中获益。我认为如果你花更多的时间解释为什么你的答案能解决OPs问题,你的答案会更强。还可以解释为什么全局变量是类属性或字段的解决方案。什么是“按类报告”这与“它创建全局变量”有什么关系?在C#中没有“全局变量”这样的东西。“全球”的语境究竟意味着什么?“全球”肯定意味着“整个计划”,或者?既然你用C#回答了一个初学者的问题,那么你应该注意你使用的术语,以及它是否有助于理解或加深误解/困惑……这不是一个“全局变量”,这是一个私有类字段。如果你花更多的时间解释为什么你的答案能解决OPs问题,我想你的答案会更有力。也解释为什么全局变量是类属性或字段的解决方案。什么是“按类报告”,这与“它创建全局变量”有什么关系?没有全局变量这回事C#中的“全局变量”。无论如何,“全局”的上下文意味着什么?全局肯定意味着“整个程序”,或者?既然你回答了一个C#初学者的问题,你应该注意你使用的术语,以及它是否有助于理解或引起误解/混淆……这不是“全局变量”,这是一个私有类字段。