将用户添加到Active Directory中的组列表中,但在添加.tostring时崩溃

时间:2015-08-04 13:54:39

标签: c#

我有连接到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;
                    }
                }
            }

        }

3 个答案:

答案 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

中将字符串值添加为null