Надлежащий способ проверить, имеет ли несвязанное управление значение

Не имело бы смысла делать уровень экземпляра (нестатическим) внутренним классом Enum - если бы перечислимые экземпляры были самостоятельно связаны с внешним классом, то они повредили бы перечислимую гарантию -

, например, если бы Вы имели

public class Foo {
   private enum Bar {
        A, B, C;
   } 
}

Для значений перечисления для надлежащего действия как константы, (psuedocode, игнорируя ограничения доступа)

Bar b1 = new Foo().A
Bar b2 = new Foo().A

, то b1 и b2 должны были бы быть теми же объектами.

5
задан Nick Dandoulakis 8 September 2009 в 09:18
поделиться

3 ответа

Текстовое поле обычно пустое, если он ничего не содержит, это не то же самое, что строка нулевой длины (""). Часто лучше всего использовать:

If Trim(Text1 & "") = vbNullString
   'Empty

Это будет верно, если текстовое поле содержит пробелы, строку нулевой длины или null.

5
ответ дан 13 December 2019 в 22:12
поделиться

В качестве альтернативы у меня есть небольшая функция, которую я считаю полезной для проверки подобных вещей при работе с различными типами переменных, и я просто хочу знать, пусто .

'-----------------------------------------------------------------------------'
' 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

Просто Сегодня тоже написал в блоге об этом.

4
ответ дан 13 December 2019 в 22:12
поделиться

Я всегда использую функцию 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")
1
ответ дан 13 December 2019 в 22:12
поделиться