c#Array将所有元素返回为null

时间:2016-10-24 05:40:07

标签: c# arrays null return getter

我有一个getter,它从该类的另一个Property中读取现有数组,并过滤​​掉具有特定属性的元素。

问题是,在读取Property之后,它返回一个元素数量正确的数组,但所有包含的元素都为null。

在调试过程中,我看到元素已正确插入。

public Member[] Assigned_Users {
    get {
        Member[] _assigned_users = new Member[0];
        //ERROR: foreach gets an array with the correct length, but all null elements
        foreach (Member m in Nested_Users) {
            if (m.Typ != Member.typ.User) continue;
            Member[] _tmp = new Member[_assigned_users.Length + 1];
            for (int r = 0; r <= _nested_members.Length - 1; r++) {
                _tmp[r] = _assigned_users[r];
            }
            _tmp[_assigned_users.Length] = m;
            _nested_members = _tmp;
        }
        foreach (Member m in Members) {
            if (m.Typ != Member.typ.User) continue;
            Member[] _tmp = new Member[_assigned_users.Length + 1];
            for (int r = 0; r <= _nested_members.Length - 1; r++) {
                _tmp[r] = _assigned_users[r];
            }
            _tmp[_assigned_users.Length] = m;
            _nested_members = _tmp;
        }
        return _assigned_users;
    }
}

public Member[] Nested_Users {
    get {

        Member[] _nested_users = new Member[0];
        foreach (Member m in Nested_Members) {
            if (m.Typ != Member.typ.User) continue;
            Member[] _tmp = new Member[_nested_users.Length + 1];
            for (int i = 0; i < _nested_users.Length - 1; i++) {
                _tmp[i] = _nested_users[i];
            }
            _tmp[_nested_users.Length] = m;
            _nested_users = _tmp;
        }
        //creates and returns a correct aray, acording to the debugger
        return _nested_users;
    }
}

任何想法如何解决这个问题?

编辑: 此代码用于以下目的。 在我们公司的古老时代,存在很多或LDAP组。由于许多LDAP实现不允许从嵌套的LDAP组中读取所有用户,因此我的公司构建了自己的用户管理后端。这是其中的一部分。 如果组已分配另一个组(这些信息都存储在SQL数据库中),则应读取嵌套组成员并将它们直接分配给基组。 所有这些都是针对针对LDAP进行身份验证的服务,但不知道如何读取嵌套组的用户。

但是即使List<Member>是更好的方法,正如评论中所建议的那样(并且被be所知),应该没有理由为什么数组用null而不是成员对象填充。或者我在这里遗漏了什么?

0 个答案:

没有答案