C# 在C中从列表中获取值#
在你们的帮助下,我编写了这段代码,它从一个.txt文件加载一个数据库,并用值填充一个列表。但是,我在实际使用列表获取值时遇到了一些问题。这是我程序中的代码C# 在C中从列表中获取值#,c#,.net,visual-studio-2012,C#,.net,Visual Studio 2012,在你们的帮助下,我编写了这段代码,它从一个.txt文件加载一个数据库,并用值填充一个列表。但是,我在实际使用列表获取值时遇到了一些问题。这是我程序中的代码 static class Program { var customers = new List<Customer>(); static void loadData() //Load data from Database { string[] stringArray = File.Read
static class Program
{
var customers = new List<Customer>();
static void loadData() //Load data from Database
{
string[] stringArray = File.ReadAllLines("Name.txt");
int lines = stringArray.Length;
if (!((lines % 25) == 0))
{
MessageBox.Show("Corrupt Database!!! Number of lines not multiple of 25!");
Environment.Exit(0);
}
for(int i = 0;i<(lines/25);i++){
customers.Add(new Customer
{
ID=stringArray[(i*25)],
Name = stringArray[(i * 25) + 1],
Address = stringArray[(i * 25) + 2],
Phone = stringArray[(i * 25) + 3],
Cell = stringArray[(i * 25) + 4],
Email = stringArray[(i * 25) + 5],
//Pretend there's more stuff here, I'd rather not show it all
EstimatedCompletionDate = stringArray[(i * 25) + 23],
EstimatedCompletionTime = stringArray[(i * 25) + 24]
});
}
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
loadData();
Application.Run(new Form1());
}
}
但是,如果我试图从customers[1].ID
EDIT(来自form2.cs)获取值,我会得到“customers在当前上下文中不存在”。我将如何申报客户以使其在任何地方都可访问
谢谢!:) 您的
customers
变量在Form2
类中根本不可见。您需要将customers
传递给Form2
类的实例(通过自定义构造函数、方法参数或设置在Form2
类上实现的公共属性/字段注入)
你需要这样的东西:
public partial class Form2 : Form
{
// add this...
public List<Customer> Customers
{
get;
set;
}
如果您是从表单1
中创建表单2
,那么您必须首先将客户
传递到表单1
,如Adam Plocher
向您展示的那样(如果您将其设置为静态),然后再传递到表单2
,但原理保持不变
另一方面,这不是一个很好的编程实践,但这超出了您的问题范围。您的
客户
变量在Form2
类中根本不可见。您需要将customers
传递给Form2
类的实例(通过自定义构造函数、方法参数或设置在Form2
类上实现的公共属性/字段注入)
你需要这样的东西:
public partial class Form2 : Form
{
// add this...
public List<Customer> Customers
{
get;
set;
}
如果您是从表单1
中创建表单2
,那么您必须首先将客户
传递到表单1
,如Adam Plocher
向您展示的那样(如果您将其设置为静态),然后再传递到表单2
,但原理保持不变
另一方面,这不是一个很好的编程实践,但这超出了您的问题范围。您的
客户
变量在Form2
类中根本不可见。您需要将customers
传递给Form2
类的实例(通过自定义构造函数、方法参数或设置在Form2
类上实现的公共属性/字段注入)
你需要这样的东西:
public partial class Form2 : Form
{
// add this...
public List<Customer> Customers
{
get;
set;
}
如果您是从表单1
中创建表单2
,那么您必须首先将客户
传递到表单1
,如Adam Plocher
向您展示的那样(如果您将其设置为静态),然后再传递到表单2
,但原理保持不变
另一方面,这不是一个很好的编程实践,但这超出了您的问题范围。您的
客户
变量在Form2
类中根本不可见。您需要将customers
传递给Form2
类的实例(通过自定义构造函数、方法参数或设置在Form2
类上实现的公共属性/字段注入)
你需要这样的东西:
public partial class Form2 : Form
{
// add this...
public List<Customer> Customers
{
get;
set;
}
如果您是从表单1
中创建表单2
,那么您必须首先将客户
传递到表单1
,如Adam Plocher
向您展示的那样(如果您将其设置为静态),然后再传递到表单2
,但原理保持不变
另一方面,这不是一个很好的编程实践,但这超出了您的问题范围。
loadData()
是静态的
,因此它看不到非静态的实例变量。将var客户
更改为static var客户
loadData()
为static
,因此它无法查看非静态实例变量。将var客户
更改为static var客户
loadData()
为static
,因此它无法查看非静态实例变量。将var客户
更改为static var客户
loadData()
为static
,因此它无法查看非静态实例变量。将var客户
更改为static var客户
您可以将customers
对象传递到Form2
或创建静态列表。无论哪种方式,它都需要是静态的,因为loadData
是静态的
要使其保持静态,可以在Program.cs中执行以下操作:
Form2 f2 = new Form2(); // supposing you have this already, whatever you named it
f2.Customers = customers; // customers being your variable
public static List<Customer> Customers { get; set; }
然后在需要访问它的任何时候,只要调用
Form1.Customers
(例如:Form1.Customers[1].ID
)您可以将Customers
对象传递到Form2
,或者创建一个静态列表。无论哪种方式,它都需要是静态的,因为loadData
是静态的
要使其保持静态,可以在Program.cs中执行以下操作:
Form2 f2 = new Form2(); // supposing you have this already, whatever you named it
f2.Customers = customers; // customers being your variable
public static List<Customer> Customers { get; set; }
然后在需要访问它的任何时候,只要调用
Form1.Customers
(例如:Form1.Customers[1].ID
)您可以将Customers
对象传递到Form2
,或者创建一个静态列表。无论哪种方式,它都需要是静态的,因为loadData
是静态的
要使其保持静态,可以在Program.cs中执行以下操作:
Form2 f2 = new Form2(); // supposing you have this already, whatever you named it
f2.Customers = customers; // customers being your variable
public static List<Customer> Customers { get; set; }
然后在需要访问它的任何时候,只要调用
Form1.Customers
(例如:Form1.Customers[1].ID
)您可以将Customers
对象传递到Form2
,或者创建一个静态列表。无论哪种方式,它都需要是静态的,因为loadData
是静态的
要使其保持静态,可以在Program.cs中执行以下操作:
Form2 f2 = new Form2(); // supposing you have this already, whatever you named it
f2.Customers = customers; // customers being your variable
public static List<Customer> Customers { get; set; }
然后,您需要随时访问它,只需调用
Form1.Customers
(例如:Form1.Customers[1].ID
)如何使它在整个程序中可见和可用?糟糕的编程实践