UNICODE.
Нет оператора goto.
Конкатенация выражается знаком +.
Строка выражается объектом класса string. Этот объект доступен только для чтения. При изменении старый экземпляр уничтожается и создаётся новый.
Указателей как отдельного типа нет (?).
В функциях и методах передача параметров только по значению. Указатель дублируется. Возврат составных значений – только через объект.
Определение класса
спецификатор class имя [extends имя-предка]{тело}[implements имя-интерфейса]
В классе отсутствуют свойства как член класса.
Определения методов встроенные (?).
В определении класса предусмотрены блоки статической инициализации
static { };
Нет деструкторов.
Создание объекта – посредством оператора new.
Обращение к члену класса – через “точку” от имени переменной, содержащей объект.
Обращение к членам классов вверх по иерархии наследования обеспечивается оператором super.
Классы могут быть (по спецификатору) abstract, final
Нет глобальных статических переменных.
Приложение запускается с указанием имени класса, в котором вызывается функция с именем main.
Глобальное поле видимости обеспечивается оператором package, проставляемыми в начале модуля.
package имя-пакета
import имя-пакета.*
2.7.5. Особенности языка C#.
Компиляция осуществляется в специальный промежуточный байт-код, исполняемый аппаратурно-независимой средой в .Net, которая создаёт для программы “контекст времени выполнения”. Исполняемый файл exe вызывает “контекст времени исполнения”.
Есть типы decimal и struct.
Нет указателей.
Определение класса
[спецификатор] class имя класса [: спецификатор-видимости имя-класса][{тело класса}];
Наследование от класса однозначное. Множественное наследование может быть наследование от интерфейсов.
Поля могут иметь спецификатор const.
Методы встроенные. В методе могут быть передачи параметров по ссылке с инициализацией и без инициализации параметра (ref и out).
Есть свойства
спецификация тип имя-свойства {
get {return = }
set { }
}
Классы могут быть (по спецификатору) abstract, final, partial
Введёна специальная разновидность членов класса – “событие”, которым можно присваивать в качестве значения цепочку указателей на обработчики. Присвоение в форме
имя события+=new имя-делегата(объект.имя обработчика)
События определяются
public event имя-делегата имя-события
где определяется как тип
public delegate void имя-делегата (сигнатура)
Могут определяться деструкторы
~ имя-класса ( )
но они явно не вызываются.
Пространство имён задаётся или продолжается оператором
namespace имя-пространства { пространство }
Using задаёт имя пространства по умолчанию до конца текущего пространства имён.
Объект в пространстве имён квалифицируется именем пространства через “толчку”.
Приложение запускается с указанием имени класса, в котором вызывается функция с именем main.
ПРИЛОЖЕНИЕ 2
Основы языка UML