因此,我在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();
}
答案 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;
}
}