我有连接到Active Directory的代码并找到正确的组。当我尝试添加到List<string>
时,它会崩溃。异常是抛出System.NullReferenceException: Object reference not set to an instance of an object.
public static List<string> user_List(string group_Name)
{
using (var context = new PrincipalContext(ContextType.Domain, "myDomainName"))
{
using (var group =GroupPrincipal.FindByIdentity(context, group_Name))
{
List<string> myList = null;
if (group == null)
{
myList.Add("No User Defined");
return myList;
}
else
{
var users = group.GetMembers(true);
foreach (var user in users)
{
if (user == null) return myList;
myList.Add(user.ToString());
// if I use :System.Windows.MessageBox.Show(user.ToString()); message box shows with test 1 test 2 and test 3
}
return myList;
}
}
}
}
答案 0 :(得分:3)
您在此声明了myList
变量:
List<string> myList = null;
但是你从未真正为它分配一个列表实例。因此,当您尝试添加时,您会收到NullReferenceException
。您无法将项目添加到不存在的列表中!
您需要实际创建一个列表:
List<string> myList = new List<string>();
答案 1 :(得分:2)
你的行
List<string> myList = null;
定义对列表的引用,但没有列表对象。它会因异常而崩溃!只需定义一个列表:
List<string> myList = new List<string>();
答案 2 :(得分:1)
变化:
List<string> myList = null;
到
List<string> myList = new List<string>();
Eplanation:
您无法在NullReferenceException