Известной монографией по программированию на С#, включая материал по созданию графических интерфейсов, является [6]. В [7] кратко рассмотрены основные вопросы.
Приведем программу, реализующую класс комплексных чисел
Определение класса Complex практически не отличается от определения такого же класса на языке С++ - модификатор public не имеет заключительного символа ‘:’ ; после определения класса нет символа ‘;’ . Вместе с тем, программа существенно отличается от C++.
Пространство имен System используется вместо подключаемых файлов. Отличается вывод информации на консоль. При создании объекта класса в С++ оператор new возвращает адрес созданного объекта указателю, а в С# указатель, как правило, не употребляется.
Существенное различие существует в концепциях типов в С# и в С++. Прежде всего, типы данных в С# подразделяются на типы – значения (value types) и ссылочные типы(reference types). Величины ссылочного типа хранятся в динамической памяти, а переменные типов-значений в памяти, управляемой компилятором. В частности, объекты классов относятся к ссылочным типам и создаются только в динамической памяти с помощью оператора new. (Переменная c создана в памяти, управляемой компилятором с копированием значения объекта b. В результате b и с указывают на одну и ту же область в динамической памяти. Изменение значения с ведет к изменению значения b и наоборот).
Главная функция является компонентом класса, а не глобальной функцией, как в С++ - глобальных компонент в С# нет. Главная функция - статический компонент, что позволяет вызывать ее без создания объекта соответствующего класса.
Все классы системные и пользовательские являются наследниками класса System.Object (object), однако упоминание его в программе как базового необязательно.
В качестве задания выбирается соответствующий вариант 2-й работы.
Контрольные вопросы
1. В какой строке ниже следующей программы на С# компилятор обнаружит ошибку и почему? Сохранится ли эта ошибка в том же коде, если он будет откомпилирован на С++?
class A {public int x;}
/* …...*/
A a1;
a1.x=10;
2.Почему функция Main в С# должна быть статической?
3.В чем заключается разница между массивом в С++ и в С#(кроме объявления)?