cat • vardecl

Variable Declaration

[ STATIC ] { PUBLIC | PRIVATE } Identifier AS Datatype [ = Expression ]

This declares a class global variable.


This variable is accessible everywhere in the class it is declared.

  • If the PUBLIC keyword is specified, it is also accessible to the other

    classes having a direct reference to an object of this class.

  • If the STATIC keyword is specified, the same variable will be "shared available" with every object instance of this class.


Static Public GridX As Integer
Static Private bGrid As Boolean
Public Name As String
Private Control As Object


The variable can be initialized with any Expression.


Private Languages As String[] = [ "fr", "it", "es", "de", "ja" ]
Private DefaultLanguage As String = Languages[1]

Alternatively, you can initialize the variable with a newly instantiated object.

[ STATIC ] { PUBLIC | PRIVATE } Identifier AS NEW Class ( Arguments ... )


Static Private Tasks As New List
Private MyCollection As New Collection(gb.Text)

Or you can initialize the variable with a native dynamic array.

[ STATIC ] { PUBLIC | PRIVATE } Identifier AS NEW Datatype [ Array dimensions ... ]

Note that you can use any expression for specifying array dimensions.


Public CONST WORD_MAX As Integer = 12
Private Words As New String[WORD_MAX * 2]
Public Matrix As New Float[3, 3]

Variables Alignment

Objects are never packed, i.e. variables are aligned to a memory address that is a multiple of its memory length:

As the declaration order is respected, you may have holes in your object. For example, if you declare a Byte variable and just after an Integer variable, you will have a three bytes unused hole between the byte and the integer.

Array declaration

They are two sorts of arrays in Gambas: "normal" arrays and "embedded" arrays. They are declared with specific syntaxes.

See Array Declaration for more information.

See also