Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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/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# 将列表传递给另一个类_C#_List - Fatal编程技术网

C# 将列表传递给另一个类

C# 将列表传递给另一个类,c#,list,C#,List,我知道这里有些代码不清楚。我还在尝试一些东西。我有三个问题,为什么在列表中添加字符串时会出现错误?我怎样把一班的名单传给我的主班?我在列表passArr中的语法正确吗?不确定是否应该在passArr的末尾添加括号 class Class1 { public static List<string> passArr { get; set; } public static void passIt() {

我知道这里有些代码不清楚。我还在尝试一些东西。我有三个问题,为什么在列表中添加字符串时会出现错误?我怎样把一班的名单传给我的主班?我在列表passArr中的语法正确吗?不确定是否应该在passArr的末尾添加括号

class Class1
{
    public static List<string> passArr
    {
        get;
        set;
    }

    public static void passIt()
    {
        passArr.Add("A"); //Error: Object reference not set to an instance of an object
    }
}
Class1类
{
公共静态列表
{
得到;
设置
}
公共静态无效passIt()
{
passArr.Add(“A”);//错误:对象引用未设置为对象的实例
}
}
主类

class Program
{
    static void Main(string[] args)
    {
        Class1.passIt();
        List<string> passArr1 = Class1.passArr;
        foreach (string s in passArr1)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}
class Program
{
    static void Main(string[] args)
    {
        Class1 cs = new Class1();
        cs.passIt();
        foreach (string s in cs.passArr)
        {
            Console.WriteLine("Inside main: " + s);
        }
        Console.ReadLine();
    }
}
类程序
{
静态void Main(字符串[]参数)
{
Class1.passIt();
列表passArr1=Class1.passArr;
foreach(passArr1中的字符串s)
{
控制台。写入线(s);
}
Console.ReadLine();
}
}
您永远不会创建列表,因此
passArr
属性(顺便说一句,它需要重命名)的值始终为
null
。你需要像这样的东西:

Class1.passArr = new List<string>();
Class1.passArr=newlist();
在某个时刻。另一种选择是使其成为只读属性,并由带有初始值设定项的字段支持:

private static readonly List<string> passArr = new List<string>();
public static List<string> PassArr { get { return passArr; } }
private static readonly List passArr=new List();
公共静态列表PassArr{get{return PassArr;}}
(这在大小写方面符合命名约定,但它当然仍然不是一个有意义的名称。)

您永远不会创建列表,因此
passArr
属性(顺便说一句,它需要重命名)的值始终为
null
。你需要像这样的东西:

Class1.passArr = new List<string>();
Class1.passArr=newlist();
在某个时刻。另一种选择是使其成为只读属性,并由带有初始值设定项的字段支持:

private static readonly List<string> passArr = new List<string>();
public static List<string> PassArr { get { return passArr; } }
private static readonly List passArr=new List();
公共静态列表PassArr{get{return PassArr;}}

(这在大小写方面符合命名惯例,但它当然仍然不是一个有意义的名称。)

感谢Jon Skeet和Sayse的回答。现在我清楚了,真正的问题是我试图在列表中添加一些东西(使用passIt方法),而不为列表创建新对象

这是我的新代码:

主类

class Program
{
    static void Main(string[] args)
    {
        Class1.passIt();
        List<string> passArr1 = Class1.passArr;
        foreach (string s in passArr1)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}
class Program
{
    static void Main(string[] args)
    {
        Class1 cs = new Class1();
        cs.passIt();
        foreach (string s in cs.passArr)
        {
            Console.WriteLine("Inside main: " + s);
        }
        Console.ReadLine();
    }
}
第一类

class Class1
{
    public List<string> passArr
    {
        get;
        set;
    }

    public void passIt()
    {
        passArr = new List<string>();
        passArr.Add("A");
    }
}
Class1类
{
公共列表帕萨尔
{
得到;
设置
}
公共无效通行证()
{
passArr=新列表();
添加(“A”);
}
}

感谢Jon Skeet和Sayse的回答。现在我清楚了,真正的问题是我试图在列表中添加一些东西(使用passIt方法),而不为列表创建新对象

这是我的新代码:

主类

class Program
{
    static void Main(string[] args)
    {
        Class1.passIt();
        List<string> passArr1 = Class1.passArr;
        foreach (string s in passArr1)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}
class Program
{
    static void Main(string[] args)
    {
        Class1 cs = new Class1();
        cs.passIt();
        foreach (string s in cs.passArr)
        {
            Console.WriteLine("Inside main: " + s);
        }
        Console.ReadLine();
    }
}
第一类

class Class1
{
    public List<string> passArr
    {
        get;
        set;
    }

    public void passIt()
    {
        passArr = new List<string>();
        passArr.Add("A");
    }
}
Class1类
{
公共列表帕萨尔
{
得到;
设置
}
公共无效通行证()
{
passArr=新列表();
添加(“A”);
}
}

感谢您的快速回复!我尝试将我的列表passArr1=Class1.passArr更改为您的答案,出现了一个错误,表明Class1不包含“passArr1”的定义。如果您想要Class1.passArr,您的passArr现在是一个带有getterSorry的私有列表,我更改了错误的代码。然而,当我尝试实现Jon Skeet的修复时,“对象引用未设置为对象的实例”错误仍然出现。如果你能帮忙,我的代码有什么问题。@Si8:这不是网站的工作方式。如果您有不同的问题,请分别发布。谢谢您的快速回复!我尝试将我的列表passArr1=Class1.passArr更改为您的答案,出现了一个错误,表明Class1不包含“passArr1”的定义。如果您想要Class1.passArr,您的passArr现在是一个带有getterSorry的私有列表,我更改了错误的代码。然而,当我尝试实现Jon Skeet的修复时,“对象引用未设置为对象的实例”错误仍然出现。如果你能帮忙,我的代码有什么问题。@Si8:这不是网站的工作方式。如果你有不同的问题,请分别发帖。我知道这是一个老问题。但是对于初学者程序员,尝试在构造函数中实例化列表:
public Class1(){passArr=new list();}
我意识到这是一个老问题。但是对于初学者程序员,请尝试在构造函数中实例化列表:
public Class1(){passArr=new list();}