This
Hidden instance parameter passed to non-static member functions in a `Type` or `Class`
Syntax
`
This.fieldname
or
With This
.fieldname
End With
`
Description
`This` is a reference to an instance of a `Type` or `Class` that is passed (through a hidden `Byref Parameter`) to all non-static member functions of that type or class. Non-static member functions are procedures declared inside the body of a `Type` or `Class` and include `Sub`, `Function`, `Constructor`, `Destructor`, assignment or `Cast` `Operator`, and `Property` procedures.
The `This` additional parameter also has the same data type as the `Type` or `Class` in which the procedure is declared. Therefore using it corresponds to referring to the instance declared name on which the non-static member function is called.
The `This` parameter can be used just like any other variable, ie., pass it to procedures taking an object of the same type, call other member procedures and access member data using `Operator . (Member Access)`, etc.
Most of the time, using `This` explicitly for member access is unnecessary; member procedures can refer to other members of the instance which they are passed directly by name, without having to qualify it with `This` and `Operator . (Member Access)`. The only times when you need to qualify member names with `This` is when the member is shadowed, for example by duplicating its name for a local variable or parameter. In these situations, qualifying the member name is the only way to refer to these masked member names.
Example
`
Type sometype
Declare Sub MyCall()
value As Integer
End Type
Dim example As sometype
'' Set element test to 0
example.value = 0
Print example.value
example.MyCall()
'' Output should now be 10
Print example.value
End 0
Sub sometype.MyCall()
This.value = 10
End Sub
`
Differences from QB

- New to FreeBASIC

See also

- `Base (Member Access)`
- `Class`
- `Type`