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