С# для AS3 разработчиков. Часть 1: Основы классов

AS3, C#, C# для AS3 разработчиков, Gamedev, Unity 15.12.2014

  PostImage_600x300

Перевод статьи From AS3 to C#, Part 1: Class Basics

Эта статья поможет разобраться в основах C# тем AS3 разработчикам, которые решили переключиться на Unity, но абсолютно не знакомы с программированием на C#.


Начнём с главного: С# файлы имеют расширение .cs, а не .as как AS3 файлы. Внутри файлов вы найдёте описание классов, из которых состоят приложения (аналогично AS3 файлам). Например, файл MyClass.cs:

Название классов в C# подчиняется той же конвенции, что и названия классов в AS3: каждое слово в названии класса должно начинаться с большой буквы, остальная часть названия пишется в нижнем регистре. Как вы могли заметить, базовый синтаксис классов в C# такой же, как у классов в AS3.

Теперь давайте добавим переменную:

Определение переменных в C# отличается от AS3. Вместо var x:int, нужно использовать int X. Конвенция названий говорит, что названия переменных должны начинаться с большой буквы.

Давайте посмотрим на функции:

Функции в C# так же отличаются от функций в AS3. В C# не используется ключевое слово function, возвращаемый тип данный указывается вначале (а не в конце, как это было в AS3), название функций должно начинаться с большой буквы, исходя из конвенции названий.

Функция с входящими параметрами:

Параметры функций, так же, как и в AS3, находятся внутри скобок, но записываются они немного по-другому: вначале тип, потом имя, с пробелом между ними. Конвенция говорит, что названия параметров функций должны начинаться с маленькой буквы.

Как и в AS3, параметры функций могут иметь значения по-умолчанию:

Функция-конструктор:

Как и в AS3, нам не обязательно указывать тип возвращаемого значения для функций-конструкторов. Вообще-то, у вас не получится указать даже тип данных void, как это можно было сделать в AS3. Так же, для объявления этого типа функций, не используется ключевое слово function.

Вы можете иметь больше одной функции-конструктора, это называется “перегрузка” функций:

Перезагрузка так же доступна для других функций:

Чтобы компилятор мог определить, какая из функций вызывается, необходимо придерживаться 2 правил. Во-первых, вы не можете иметь 2 функции с одинаковыми параметрами:

Это же касается тех функций, вызов которых может выглядеть одинаково, если не будет указан один из параметров по-умолчанию:

Во-вторых, вы не можете “перегружать” функции по типу данных, который они возвращают:

Придерживаясь этих двух простых правил, вы сможете “перегружать” функции, сколько ваша душа пожелает =)

Как и в AS3, для определения статических функций необходимо добавить ключевое слово static:

То же самое со статическими переменными:

Теперь, когда мы знаем, как внутри классов определять классы, переменные, функции и конструкторы, давайте рассмотрим как использовать их:

Всё это очень похоже на AS3. Обратите внимание, что локальная переменная mc начинается с маленькой буквы, как и параметры функций.

Давайте обсудим модификаторы доступа. Стандартные модификаторы public, private и protected имеют такой же синтаксис и такое же поведение, как и в AS3. Для их использования достаточно просто добавить их перед возвращаемым типом данных функции, типом переменной или ключевым словом class:

В C#, как и в AS3, существует модификатор доступа internal, который имеет такое же название, но немного другое поведение (по-сравнению с AS3). В AS3 модификатор internal означает “доступно для текущего класса и других классов в текущем пакете”. В C# он означает “доступно для текущего класса и остальных классов в текущей сборке”. Я расскажу про понятие “сборки” в других статьях, но пока что, думайте о них, как о группе классов, собранных в одном бинарном файле.

Так же, в C# есть модификатор protected internal, который является комбинацией protected и internal.

В завершении, сравнение описанных особенностей C# и AS3 кода:

Этим завершается первая часть цикла статей “С# для AS3 разработчиков“. Следующие статьи будут касаться более сложных тем, включая такие особенности C#, аналоги которых не существуют в AS3.

Оставайтесь на связи!

Похожие записи