Function (Member)
Declares or defines a member procedure returning a value
Syntax
`
{ Type | Class | Union } typename
Declare [ Static | Const ] Function fieldname [calling convention specifier] [ Alias external_name ] ( [ parameters ] ) [ ByRef ] As datatype [ Static ]
End { Type | Class | Union }
Function typename.fieldname ( [ parameters ] ) [ ByRef ] As datatype [ Export ]
statements
End Function
`
Parameters
`typename`
name of the `Type`, `Class`, or `Union`
`fieldname`
name of the procedure
`external_name`
name of field as seen when externally linked
`parameters`
the parameters to be passed to the procedure
`calling convention specifier`
can be one of: `cdecl`, `stdcall` or `pascal`
Description
`Function` members are accessed with `Operator . (Member Access)` or `Operator -> (Pointer To Member Access)` to call a member procedure that returns a value (a reference can also be returned by specifying `Byref As return_type`). The procedure may optionally accept parameters either `ByVal` or `ByRef`. `typename` be overloaded without explicit use of the `Overload` keyword.
`typename` is the name of the type for which the `Function` method is declared and defined. Name resolution for `typename` follows the same rules as procedures when used in a `Namespace`.
A hidden `This` parameter having the same type as `typename` is passed to non-static member procedures. `This` is used to access the fields of the `Type`, `Class`, or `Union`.
To access duplicated symbols defined as global outside the Type, add one or preferably two dot(s) as prefix: `.SomeSymbol` or preferably `..SomeSymbol` (or only `..SomeSymbol` if inside a With..End With block).
A `Static (Member)` may be declared using the `Static` specifier. A `Const (Member)` may be declared using the `Const` specifier.
As for a normal `Function`, the return value of a `Function` member can be ignored in the calling code.
Example
`
#include "vbcompat.bi"
Type Date
value As Double
Declare Static Function Today() As Date
Declare Function Year() As Integer
Declare Function Month() As Integer
Declare Function Day() As Integer
End Type
Function Date.Today() As Date
Return Type(Now())
End Function
Function Date.Year() As Integer
Return ..Year(value)
End Function
Function Date.Month() As Integer
Return ..Month(value)
End Function
Function Date.Day() As Integer
Return ..Day(value)
End Function
Dim d As Date = Date.Today
Print "Year = "; d.Year
Print "Month = "; d.Month
Print "Day = "; d.Day
`
Dialect Differences

- Only available in the -lang fb dialect.

See also

- `Class`
- `Function`
- `Sub (Member)`
- `Type`