Другим случаем, когда NullReferenceExceptions
может случиться, является (неправильное) использование оператора as
:
class Book {
public string Name { get; set; }
}
class Car { }
Car mycar = new Car();
Book mybook = mycar as Book; // Incompatible conversion --> mybook = null
Console.WriteLine(mybook.Name); // NullReferenceException
Здесь Book
и Car
являются несовместимыми типами; a Car
не может быть преобразован / передан в Book
. Когда этот сбой завершается неудачно, as
возвращает null
. Используя mybook
после этого, вы вызываете NullReferenceException
.
В общем случае вы должны использовать cast или as
, как показано ниже:
Если вы ожидаете преобразования типа в всегда преуспевает (т. е. вы знаете, какой объект должен быть впереди времени), тогда вы должны использовать cast:
ComicBook cb = (ComicBook)specificBook;
Если вы не уверены в типе, но хотите попробовать , чтобы использовать его как определенный тип, затем используйте as
:
ComicBook cb = specificBook as ComicBook;
if (cb != null) {
// ...
}
Как говорит Алекс, нет универсальной поддержки USB на уровне BIOS. Тем не менее, были попытки сделать настоящие DOS-драйверы для USB-устройств. Я нашел страницу с некоторыми исходными кодами, которые вы должны использовать: http://bretjohnson.us/source/source.htm
Согласно руководству GEUB ( http://www.gnu.org/software/grub/manual/html_node/Installing-GRUB-using-grub_002dinstall.html ), не-багги BIOS выведет USB в качестве жесткого диска. Таким образом, вы можете использовать прерывания жесткого диска (например, INT 0x13) для поиска и доступа к USB, как обычного оборудования. BIOS делает то же самое для CDROM (см. http://wiki.osdev.org/El-Torito нет режима эмуляции). Я думаю, что BIOS сделает это для всех поддерживаемых параметров загрузки, но я не нашел никаких документов для поддержки этого.
В BIOS для ПК не поддерживается поддержка USB-ввода-вывода, аналогичная всем другим устройствам ввода-вывода (клавиатура, дисплей, последовательный, параллельный, диск, динамик). USB пришел слишком поздно на вечеринку. Единственная связанная с USB вещь, которую вы можете получить от BIOS, - это поддержка USB-клавиатур и памяти, подключенных через USB (вы можете загрузиться с них на современных ПК). Помимо этого, вы должны реализовать свой собственный USB-накопитель.