Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 在C中从列表中获取值#_C#_.net_Visual Studio 2012 - Fatal编程技术网

C# 在C中从列表中获取值#

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

在你们的帮助下,我编写了这段代码,它从一个.txt文件加载一个数据库,并用值填充一个列表。但是,我在实际使用列表获取值时遇到了一些问题。这是我程序中的代码

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

如何使它在整个程序中可见和可用?糟糕的编程实践