Не имело бы смысла делать уровень экземпляра (нестатическим) внутренним классом Enum - если бы перечислимые экземпляры были самостоятельно связаны с внешним классом, то они повредили бы перечислимую гарантию -
, например, если бы Вы имели
public class Foo {
private enum Bar {
A, B, C;
}
}
Для значений перечисления для надлежащего действия как константы, (psuedocode, игнорируя ограничения доступа)
Bar b1 = new Foo().A
Bar b2 = new Foo().A
, то b1 и b2 должны были бы быть теми же объектами.
Текстовое поле обычно пустое, если он ничего не содержит, это не то же самое, что строка нулевой длины (""). Часто лучше всего использовать:
If Trim(Text1 & "") = vbNullString
'Empty
Это будет верно, если текстовое поле содержит пробелы, строку нулевой длины или null.
В качестве альтернативы у меня есть небольшая функция, которую я считаю полезной для проверки подобных вещей при работе с различными типами переменных, и я просто хочу знать, пусто .
'-----------------------------------------------------------------------------'
' True if the argument is Nothing, Null, Empty, Missing or an empty string. '
'-----------------------------------------------------------------------------'
Public Function IsBlank(arg As Variant) As Boolean
Select Case VarType(arg)
Case vbEmpty
IsBlank = True
Case vbNull
IsBlank = True
Case vbString
IsBlank = (arg = vbNullString)
Case vbObject
IsBlank = (arg Is Nothing)
Case Else
IsBlank = IsMissing(arg)
End Select
End Function
Просто Сегодня тоже написал в блоге об этом.
Я всегда использую функцию Nz (variable, valueIfNull) для проверки подобных вещей. Например:
if (Len(Nz(Me.txt1, "")) > 0) then
'Me.txt1 does not contain a value
end if
Или, если я хочу сохранить значение текстового поля в наборе записей:
rst!Name = Nz(Me.txtName, "No name given")