Keyword

# CType

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

## Description

Performs explicit type conversion (only for data types that can be implicitly converted).

## Usage

``` xojo
result = CType(value, datatype)
```

| Name     | Type     | Description                                                                                                   |
|----------|----------|---------------------------------------------------------------------------------------------------------------|
| result   | Any      | The passed *value* converted to the *datatype*.                                                               |
| value    | Any      | The value to be converted to *datatype*. This must be a value that can be implicitly converted to *datatype*. |
| datatype | DataType | A built-in datatype. This must be a datatype to which *value* can be implicitly converted.                    |

## Notes

The <span class="title-ref">CType</span> operator is the explicit version of type conversion. Implicit conversion is available via the assignment (`=</api/language/operators/comparison/equals_operator>`) operator.

<span class="title-ref">CType</span> does not necessarily preserve the value across the types. It converts the passed value source type to the destination data type. In that regard, it is identical to implicit conversion. If you are using <span class="title-ref">CType</span> to convert a real number data type (e.g., `single</api/data_types/single>`, `double</api/data_types/double>`, `currency</api/data_types/currency>`) to an `integer</api/data_types/integer>` data type, it truncates the value rather than rounds. Sign extension is preserved when converting from a signed data type to another signed data type. Conversion between signed and unsigned types (either way) preserves the bits but not the value.

## Sample code

The following compares implicit and explicit type conversion:

``` xojo
Var s As Single
Var i As Integer

i = 5
s = i ' implicit conversion
s = CType(i, Single) ' explicit conversion
```

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

The following illustrates loss of information in the conversion:

``` xojo
Var d As Double
Var i As Integer

d = 566.75
i = CType(d, Integer) ' i = 566
i = d ' i = 566
```

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Convert an Integer to Boolean:

``` xojo
' Convert Integer to Boolean
' 0 converts to False
' non-zero converts to True
Var i As Integer = 42

Var b As Boolean
b = CType(i, Boolean)
```

## Compatibility

|                       |     |
|-----------------------|-----|
| **Project Types**     | All |
| **Operating Systems** | All |

<div class="seealso">

`=</api/language/operators/comparison/equals_operator>` operator.

</div>
