我创建了一个我的IList所在的类:
public class ListTable
{
private IList<object> rolelist = new List<object>();
public IList<object> GetList()
{
return rolelist;
}
}
然后我将其添加到我的MainWindow并将一些内容添加到List中: 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,因此无法获取List。
有人可以告诉我为什么它没有得到名单?以及如何访问此列表的哪些项目?
答案 0 :(得分:3)
根据您提供的代码示例,MainWindow
和FirmCustomer
正在使用ListTable
类的两个不同实例。您已将项目添加到MainWindow
中的实例,但FirmCustomer
中的实例对原始实例一无所知。
当您创建FirmCustomer
的实例时,您应该将现有的ListTable
实例传递给它,以便它可以读出之前添加的值。
此外,将项添加到列表时,代码可能没有按照您的意图执行操作。您发布的代码会在列表中添加一个object[]
。您应该分别为每个项目调用IList.Add()
,而不是先将它们添加到阵列中。
答案 1 :(得分:2)
如果您想在不同类之间共享列表,可以将其设为static
:
public class ListTable
{
private static IList<object> rolelist = new List<object>();
public static IList<object> GetList()
{
return rolelist;
}
}
<强>用法:强>
IList<object> = ListTable.GetList();
截至目前,您正在为您创建的每个IList<object>
实例创建新的ListTable
。
答案 2 :(得分:1)
使用静态关键字声明该字段对所有人来说都很常见,所以你可以获得值添加一个类获得另一个类。我在下面的代码中做了一个样本
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();
}
}
}