При динамическом приведении типов используется постфиксное выражение типа as DesiredTypeName
. Vala добавит в этом месте допустимости такой операции - если это не так, то будет возвращен null. Однако при этом требуется, чтобы и исходный и конечный типы были ссылочными типами.
Например
Button b = widget as Button;
Если по какой причине тип widget не Button или его потомок или не реализует интерфейс Button, то b будет null. Такое приведение эквивалентно:
Button b = (widget is Button) ? (Button) widget : null;