Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - CONST (Klausel)

Referenz-Navigation

 

Syntax A:

[DECLARE] {SUB | FUNCTION} _
        ( [BYVAL | BYREF] [Parameter] AS [CONST] Typ [= Wert]
          [, ...] )

Syntax B:

TYPE typename
  DECLARE CONST {SUB | FUNCTION} Prozedurname ...
END TYPE

Typ: Klausel
Kategorie: Programmablauf

Dieser Eintrag behandelt die Klausel CONST bei der Parameterübergabe bzw. der Deklaration von Memberfunktionen. Für die Definition von Konstanten siehe BefehlsreferenzeintragCONST; für die Klausel CONST in SELECT-Anweisungen siehe BefehlsreferenzeintragSELECT CASE.

CONST bewirkt, dass auf die damit bezeichnete Variable (Syntax A) bzw. auf die Prozedur innerhalb eines BefehlsreferenzeintragUDTs (Syntax B) nur lesend, aber nicht schreibend zugegriffen werden kann.

Als Klausel bei der Parameterübergabe in Syntax A garantiert CONST, dass die damit bezeichnete Variable innerhalb der Prozedur nicht verändert werden kann. Wird beim Compiliervorgang eine Operation entdeckt, welche den Wert des Parameters möglicherweise ändert, so wird der Compiliervorgang mit einem Fehler abgebrochen. Da die Überprüfung bereits beim Compilieren stattfindet, kommt es während der Programmausführung zu keinen Geschwindigkeitsnachteilen.

Beispiel:

Sub foo (x As Integer, y As Const Integer)
  Print x, y

  x = 5
  ' y = 7 ' wird versucht y zu ändern, gibt der Compiler einen Fehler aus

  Print x, y
End Sub

foo(1, 2)
Sleep

Als Klausel bei Memberfunktionen (Syntax B) bezieht sich der Schreibschutz auf die Instanz des UDTs, auf die mit BefehlsreferenzeintragTHIS zugegriffen werden kann. Damit ist es der Prozedur nicht erlaubt, schreibend auf die Records des UDTs zuzugreifen oder eine nicht-konstante Memberfunktion aufzurufen. Wird beim Compiliervorgang eine solche nicht erlaubte Operation entdeckt, so wird der Compiliervorgang mit einem Fehler abgebrochen.
Memberfunktionen können nicht gleichzeitig mit CONST und BefehlsreferenzeintragSTATIC deklariert werden, da statische Memberfunktionen keinen THIS-Parameter besitzen.

Beispiel:

Type foo
  x As Integer
  c As Const Integer = 0
  Declare Const Sub Lesen1()
  Declare Const Sub Lesen2()
  Declare Sub Schreiben1()
  Declare Sub Schreiben2()
End Type

Sub foo.Schreiben1
  x = 1         ' ein nicht konstantes Record ändern
  ' c = 1       ' Compiler-Fehler: c ist konstant
End Sub

Sub foo.Schreiben2
  Lesen1        ' sowohl konstante Memberfunktionen als auch
  Schreiben1    ' nicht konstante können aufgerufen werden
End Sub

Sub foo.Lesen1
  ' auf Records kann lesend zugegriffen werden ...
  Dim y As Integer
  y = c + x

  ' ... sie können aber nicht verändert werden
  ' x = 10      ' Compiler-Fehler: Lesen1 ist konstant
End Sub

Sub foo.Lesen2
  ' konstante Memberfunktionen können aufgerufen werden ...
  Lesen1
  ' ... nicht konstante jedoch nicht
  ' Schreiben1  ' Compiler-Fehler
End Sub

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.18.3

Siehe auch:
BefehlsreferenzeintragCONST, BefehlsreferenzeintragDECLARE, BefehlsreferenzeintragSUB, BefehlsreferenzeintragFUNCTION, BefehlsreferenzeintragTYPE (UDT), BefehlsreferenzeintragSELECT CASE, BefehlsreferenzeintragDIM, BefehlsreferenzeintragProzeduren, BefehlsreferenzeintragObjektorientierung


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 18.01.2012 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 27.12.2012 von Redakteurnemored gespeichert.
  Versionen Versionen