Самое быстрое преобразование от набора для списка <T>

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
67
задан John Saunders 20 September 2012 в 18:16
поделиться

5 ответов

Какая версия платформы? С 3,5 Вы могли, по-видимому, использовать:

List<ManagementObject> managementList = managementObjects.Cast<ManagementObject>().ToList();

(отредактированный для удаления более простой версии; я проверил и ManagementObjectCollection только реализации недженерик IEnumerable форма)

123
ответ дан Marc Gravell 24 November 2019 в 14:31
поделиться

managementObjects.Cast<ManagementBaseObject>().ToList(); хороший выбор.

Вы могли улучшить производительность путем предварительной инициализации способности списка:


    public static class Helpers
    {
        public static List<T> CollectionToList<T>(this System.Collections.ICollection other)
        {
            var output = new List<T>(other.Count);

            output.AddRange(other.Cast<T>());

            return output;
        }
    }
3
ответ дан mancaus 24 November 2019 в 14:31
поделиться

Вы могли попробовать:

List<ManagementObject> managementList = new List<ManagementObject>(managementObjects.ToArray());

Не уверенный, если.ToArray () доступен для набора. При использовании кода, Вы отправили, удостоверьтесь, что Вы инициализируете Список с количеством существующих элементов:

List<ManagementObject> managementList = new List<ManagementObject>(managementObjects.Count);  // or .Length
1
ответ дан steffenj 24 November 2019 в 14:31
поделиться

Пока ManagementObjectCollection реализует IEnumerable< ManagementObject> можно сделать:

List<ManagementObject> managementList = new List<ManagementObjec>(managementObjects);

, Если это не делает, тогда Вы застреваете, делая его способ, которым Вы делаете его.

0
ответ дан MagicKat 24 November 2019 в 14:31
поделиться

можно преобразовать как ниже фрагмента кода

Collection<A> obj=new Collection<return ListRetunAPI()>
-2
ответ дан John Saunders 24 November 2019 в 14:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: