Вопрос

Я пытался создать класс сценариев VB с постоянным и получил ошибку 800A03EA.Это ошибка VBS?Разве это не фундаментальное правило ООП?

Class customer
   ' comment it const and its works
   const MAX_LEN=70

   Private Name

   Private Sub Class_Initialize
      Name = ""
   End Sub

   ' name property.
   Public Property Get getName
      getName = Name
   End Property

   Public Property Let letName(p_name)
      Name = p_name
   End Property
end class
.

Это было полезно?

Решение

the Документация Перечисляет все заявления, которые разрешены в контексте классов.Генеракодицетагкод не среди них, поэтому он не поддерживается.Вы можете работать по всему вопросу, используя частные переменные участника, которые вы инициализируете во время мнения (I.E. в Const):

Class customer
  Private MAX_LEN
  Private Name

  Private Sub Class_Initialize
    MAX_LEN = 70
    Name = ""
  End Sub

  ...
End Class
.

Если экземпляры класса должны раскрыть это значение, вы можете реализовать его как свойство только для чтения:

Class customer
  Private MAX_LEN

  Private Sub Class_Initialize
    MAX_LEN = 70
  End Sub

  'read-only property, so no "Property Let/Set"
  Public Property Get MaxLength
    MaxLength = MAX_LEN
  End Property

  ...
End Class
.

Однако, как Ekkehard.horner правильно указал, значение все еще может быть изменено по объектному внутреннему коду.Если неизменность является основным требованием для этого значения, вы должны реализовать его как глобальную константу.

Другие советы

Я согласен с ansgar wiechers s Ответ , но хотел бы предложить другой вариант.

Если неизменность важнее производительности, вы можете привести значение непосредственно в Get и используйте свойство, чтобы обратиться к значению вместо переменной классов.

Class customer

  'read-only property, so no "Property Let/Set"
  Public Property Get MaxLength
    MaxLength = 70
  End Property

  ...
End Class
.

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

Так что с помощью глобального const (возможно, с именем имени «имен») может быть лучшим обходным отделением в случаях, когда постоянная связь является наиболее важным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top