[英]Read and Write into IList from another Class
我在IList所在的位置创建了一个类:
public class ListTable
{
private IList<object> rolelist = new List<object>();
public IList<object> GetList()
{
return rolelist;
}
}
然后,将其添加到MainWindow并将一些内容添加到列表中:MainWindow.xaml.cs
ListTable rolelist = new ListTable();
private void CheckRights()
{
IList<object> testlist = myClass.GetList();
testlist.Add(new object[] { i, // 0
(string)reader["role"], // 1
(int)reader["can_add_kunde"], // 2
(int)reader["can_add_assignment_kunde"], // 3
(int)reader["can_delete_kunde"], // 4
(int)reader["can_edit_kunde"], // 5
(int)reader["can_add_firmenkunde"], // 6
(int)reader["can_add_assignment_firmenkunde"], // 7
(int)reader["can_delete_firmenkunde"], // 8
(int)reader["can_edit_firmenkunde"], // 9
(int)reader["can_add_assignment"], // 10
(int)reader["can_delete_assignment"], // 11
(int)reader["can_edit_assignment"], // 12
(int)reader["can_add_employee"], // 13
(int)reader["can_delete_employee"], // 14
(int)reader["can_edit_employee"], // 15
(int)reader["can_see_adminpanel"], // 16
(int)reader["can_change_columns_kunden"], // 17
(int)reader["can_change_columns_firmenkunden"], // 18
(int)reader["can_change_databaseTables"] // 19
});
}
现在我想从另一个类访问此列表:FirmCustomer.xaml.cs
private ListTable list;
private void CheckRights(string username)
{
IList<object> called = list.GetList();
foreach (object[] item in called)
{
MessageBox.Show(item[1].ToString());
}
}
但called
始终为null,因此不会获取列表。
有人可以告诉我为什么它没有得到清单吗? 以及如何访问此列表及其项目?
根据您提供的代码示例, MainWindow
和FirmCustomer
使用的是ListTable
类的两个不同实例。 您已将项目添加到MainWindow
的实例中,但是FirmCustomer
中的实例对原始实例一无所知。
创建FirmCustomer
实例时, FirmCustomer
的现有实例ListTable
给它,以便它可以读出以前添加的值。
另外,将项目添加到列表中时,代码可能没有按照您的预期做。 您发布的代码会将一个object[]
添加到列表中。 您应该IList.Add()
为每个项目调用IList.Add()
,而不是先将它们添加到数组中。
如果要在不同的类之间共享列表,可以将其设为static
:
public class ListTable
{
private static IList<object> rolelist = new List<object>();
public static IList<object> GetList()
{
return rolelist;
}
}
用法:
IList<object> = ListTable.GetList();
到目前为止,您正在为创建的每个ListTable
实例创建一个新的IList<object>
。
使用static关键字声明该字段对于所有字段都是通用的,因此,您可以将值添加一个类,再获取另一个类。 我被做了一个下面的代码示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ReadIList
{
class Program
{
static void Main(string[] args)
{
mainclass mc = new mainclass();
mc.CheckRights();
secondclass sc = new secondclass();
sc.CheckRights(string.Empty);
}
}
public class ListTable
{
public static IList<object> rolelist = new List<object>();
public IList<object> GetList()
{
return rolelist;
}
}
public class mainclass
{
ListTable rolelist = new ListTable();
private ListTable myClass= new ListTable();
public void CheckRights()
{
IList<object> testlist = myClass.GetList();
testlist.Add(new object[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 });
}
}
public class secondclass
{
private ListTable list=new ListTable();
public void CheckRights(string username)
{
IList<object> called = list.GetList();
foreach (object[] item in called)
{
Console.WriteLine(item[1].ToString());
}
Console.ReadLine();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.