无法访问主类中其他类中的列表
本文关键字:列表 其他 访问 | 更新日期: 2023-09-27 18:29:30
我有两个文件,其中一个包含:
namespace Vluchten_Boeken
{
public class Vluchten
{
public string FlightNr;
public string FlightCarrier;
public string Destination;
public int maxPassagers;
public int bookedPassagers;
public Vluchten(string _FlightNr, string _FlightCarrier, string _Destination, int _maxPassagers, int _bookedPassagers)
{
this.FlightNr = _FlightNr;
this.FlightCarrier = _FlightCarrier;
this.Destination = _Destination;
this.maxPassagers = _maxPassagers;
this.bookedPassagers = _bookedPassagers;
}
}
}
另一个文件包含:
namespace Vluchten_Boeken
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
Console.Write("");
foreach (Vluchten Vluchten in vluchtList)
{
Console.WriteLine(vluchtList);
}
}
}
}
然而,我可以很容易地在列表所在的同一文件中对列表执行foreach
循环,但当我尝试在另一个文件中执行时,我会得到
Error 1 The name 'vluchtList' does not exist in the current context
这可能是一个简单的解决方案,也许我一直在谷歌上搜索错误的东西,但我无法解决。
错误告诉您尚未定义vluchtList。
在您的行"foreach(vluchtList中的Vluchten-Vluchten)"中,您试图访问编译器不知道的名为vluchtList的内容。
在你可以使用vluchtList之前,你需要定义它。它看起来应该是一个列表,所以在上面的行之前试试这个:
List<Vluchten> vluchtList = new List<Vluchten>();
这将把变量定义为List类型,即Vluchten对象的列表。
虽然这很好,但你的foreach循环似乎对它没有任何作用,因为它是空的,所以你可能想用一些Vluchten数据填充它:
vluchtList.Add(new Vluchten
{
FlightNr = "My Flight Number";
FlightCarrier = "My Flight Carrier";
Destination = "My Destination";
maxPassagers = 200;
bookedPassagers = 130;
});
这只是向列表中添加一个Vluchten对象,但您可以添加多个。
3个问题:
- 您的列表
vluchtList
没有在任何地方定义。为了输出任何内容,您必须定义它并用一些Vluchten
对象填充它 - 在循环中,在进行控制台输出时,应该使用列表中的当前
vluchten
对象,而不是每次输出整个List<Vluchten>
- 您应该重写类上的
ToString()
属性,以便它输出一些有意义的内容。如果没有重写,ToString()
(它将在Console.WriteLine()
中被内部调用)将只抛出一些关于Vluchten
类型的信息
这里有一个代码示例,应该对这里有所帮助:
public class Vluchten
{
// Existing code here . . .
// Override the ToString() method
public override string ToString()
{
return string.Format(
"{0} flight #{1} is heading to {2} carrying {3} passengers out of {4} max.",
FlightCarrier, FlightNr, Destination, bookedPassagers, maxPassagers);
}
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
// Normally this would be created and populated elsewhere.
// I've put it here for now because it's simpler for this example
var vluchtList = new List<Vluchten>
{
new Vluchten("flight1", "carrier1", "destination1", 10, 1),
new Vluchten("flight2", "carrier2", "destination2", 20, 2),
new Vluchten("flight3", "carrier1", "destination3", 30, 3),
new Vluchten("flight4", "carrier2", "destination1", 40, 4),
new Vluchten("flight5", "carrier1", "destination2", 50, 5),
};
Console.WriteLine("");
// In the real app, where we aren't creating the list above, it's possible
// that there may be no flights. So if the list is empty (or null) we can
// tell the user that there is no info (rather than not outputting anything)
if (vulchtList == null || !vluchtList.Any())
{
Console.WriteLine("There is no flight information to display.");
}
else
{
foreach (Vluchten vluchten in vluchtList)
{
Console.WriteLine(vluchten);
}
}
}