Как вернуть значение List из контроллера для просмотра с помощью linq в рамках сущности

Невозможно увидеть, является ли указатель «действительным» во всех его значениях.

Конечно, вы можете попытаться разыменовать указатель (*ptr = x; или x = *ptr). Если ваш код не сбой, указатель указывает на действительную память. Если он упал, очевидно, указатель не годится. К сожалению, этот подход немного похож на проверку того, загружена ли пушка, выстрелив в голову - что не самое умное ... К сожалению, с указателями нет «проверьте камеру, чтобы увидеть, загружена ли она», поэтому нет реального хорошего способа выяснить, является ли указатель действительным, кроме «если он не вызывает аппаратную ошибку, он действителен».

Обратите внимание, что это только на самом деле скажет вам, что «указатель указывает на некоторую память, к которой вы можете получить доступ» в большинстве случаев. Это НЕ означает, что указатель «правильный для того, что вы хотите» (например, указывает на правильный тип). И это НЕКОТОРНО не скажет вам, указывает ли указатель на «устаревшие данные» (то есть, когда указатель WAS действителен, но теперь он используется для чего-то другого).

К сожалению, с 232 или 264 [fактически 248] возможно действительными адресами памяти в современной системе, почти невозможно узнать, какие адреса действительны, а какие нет. Даже внутри операционной системы, как показывает ОС, если она может записать в память, которую вы попросили написать, это «попытаться написать ее, посмотреть, что произойдет». Для ОС это работает отлично, потому что это может быть осторожным, «это может пойти не так, и если это произойдет, я продолжу там в коде восстановления ошибок». ОС должна справиться с этим, потому что она должна принять, а) что программисты совершают ошибки, и б) что некоторые люди на самом деле пишу вредоносный код для TRY, чтобы разорвать ОС.

Способ для приложения «убедиться, что указатели действительны» - это то, что программист пишет код, который ОСТОРОЖНО, о том, что он хранит в указателях, как он освобождает эти указатели и использует только указатели с допустимыми значениями хранится в них. Вы не должны заканчивать «необходимость проверки правильности указателя» - тогда вы «делаете это неправильно».

(Когда вы некоторое время работаете с системой и читаете значения указателя в отладчике, вы через некоторое время узнаете «хорошие» и «плохие» указатели, но это только потому, что вы узнаете, что обычно , хороший указатель против плохого указателя выглядит так: писать код для распознавания такого почти невозможно - особенно если система выделяет много памяти, поэтому использует большую часть доступного пространства.)

Конечно, в C ++ существуют интеллектуальные указатели, векторы и различные другие инструменты, которые означают много времени, когда вам даже не нужно беспокоиться о указателях. Но понимание того, как использовать указатели и как работают указатели, по-прежнему хорошо.

-1
задан Vignesh Siva 23 February 2019 в 14:09
поделиться

1 ответ

Вид должен быть

@model IEnumerable<LIMS.Models.NavigationMenu>
0
ответ дан Nisfan 23 February 2019 в 14:09
поделиться
Другие вопросы по тегам:

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