> For the complete documentation index, see [llms.txt](https://nim-ru-tutorial.gitbook.io/ibm-vala-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nim-ru-tutorial.gitbook.io/ibm-vala-guide/obzor-yazyka-programmirovaniya-vala.-chast-1/obzor-sintaksisa.md).

# Обзор синтаксиса

Как я уже сказал, синтаксис Vala во многом напоминает синтаксис C#, и те, кто знаком с C, C++, C# и прочими С-подобными языками, затруднений испытывать не будут. Тем не менее следует уделить внимание особенностям, отличающим Vala от прочих языков из "группы С".

Для переменных главным отличием является наличие механизма Type Inference (предполагаемый тип), позволяющий объявить переменную неопределённого типа следующим образом:

```csharp
var b;
```

Базовые типы данных практически не отличаются от типов прочих языков: байтовый, Юникод-символ, числовые (все стандартные типы), логический, структура, перечисление, массив и UTF-8-строка.

Объявление, определение и работа с типами данных вполне очевидны, а приведение типов (type casting) можно выполнять так, как принято в C:

```csharp
int a = 7;
float x = (float)a;
```

или по методике C#, например:

```csharp
Window win = new Window( WindowType.TOPLEVEL );
Object obj = win as Object;
```

Подразумевается, что преобразование является осуществимым, т.е. класс `Window` является подклассом `Object`, иначе переменной `obj` будет присвоена `null`-ссылка.

Набор операторов Vala точно такой же, как в любом C-подобном языке, но перегружать (overload) их нельзя.

Управляющие конструкции: `if-else` и switch, циклы `while`, `do-while` и `for`. Есть ещё цикл foreach( `int a in int_array` ) {...} – принцип его работы очевиден.
