C#: Сравнение с пустым указателем

Файлы с именем __init__.py используются для маркировки каталогов на диске в виде каталогов пакетов Python. Если у вас есть файлы

mydir/spam/__init__.py
mydir/spam/module.py

и mydir на вашем пути, вы можете импортировать код в module.py в качестве

import spam.module

или

from spam import module

Если вы удалите файл __init__.py, Python больше не будет искать подмодули внутри этого каталога, поэтому попытки импортировать модуль не удастся.

Файл __init__.py обычно пуст, но может использоваться для экспорта выбранных частей пакета под более удобным именем, удержания удобных функций и т. д. В приведенном выше примере к содержимому модуля init можно получить доступ как

import spam

на основе это

15
задан mghie 27 February 2009 в 04:57
поделиться

4 ответа

В 99%-м случае этот код эквивалентен.

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

А конкретный пример я видел, прежде чем будет следующий

public static bool operator==(Student left, Student right) {
  return left.Equals(right);
}

, Это перестанет работать, когда пустой указатель будет слева, но вероятно не когда пустой указатель в справа.

Это - довольно далекое угловой случай все же.

41
ответ дан 1 December 2019 в 00:01
поделиться

Форма" if" оператор, который помещает константу слева, является пережитком от C/C++, где у Вас могло быть произвольное выражение в если оператор.

синтаксис C# для того, если операторы требует, чтобы выражение оценило к bool, что означает, что if (foo = 0) не скомпилирует.

9
ответ дан 1 December 2019 в 00:01
поделиться

Как указано другими они главным образом эквивалентны.

необходимо также смотреть на: http://en.wikipedia.org/wiki/Null_Object_pattern

Это - очень полезная альтернатива простой проверке нулевую ссылку.

2
ответ дан 1 December 2019 в 00:01
поделиться

if (null==myobject) {

- это безопасный способ написания оператора if. Это происходит из C / C ++, где условие представляет собой выражение, вычисляемое как int . Если результат равен нулю, это означает ложь , все остальное - истина . Вы можете написать что-то вроде

if (variable == 1) {

, но если вы не будете осторожны, вы можете также написать

if (variable = 1) { 

, и в этом случае у вас есть присваивание, которое всегда оценивается в 1 и, следовательно, всегда истинно.

Вы можете скомпилировать это и запустить без проблем, но результат будет не таким, как вы ожидали. Итак, программисты на C / C ++ начали писать такие вещи, как

if (1 == variable) {

Это не будет компилироваться, если вы сделаете ошибку, поэтому вам всегда приходилось писать так, как вы хотели. Позже это станет (хорошей) привычкой, и вы будете использовать ее на всех языках программирования, например на C #.

6
ответ дан 1 December 2019 в 00:01
поделиться
Другие вопросы по тегам:

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