Описание конструктора.
Компьютерные технологии (программирование на C#)
При создании экземпляра конструктор обнуляет все поля. Поэтому в поле s, которое Method () должен вывести на экран, ничего нет (пустая строка). Компиляция Solution1 при использовании новой редакции кода библиотечного класса LibClasses._1 приведет к ошибке в коде класса _2 проекта MainExe. Программист может описать свой собственный конструктор экземпляра класса, определив его как функцию… Читать ещё >
Описание конструктора. Компьютерные технологии (программирование на C#) (реферат, курсовая, диплом, контрольная)
Программист может описать свой собственный конструктор экземпляра класса, определив его как функцию с параметрами.
Войдем в окно библиотечного файла LibCode. Добавим поле s класса string в класс _1 и конструктор с параметром типа string так, что новая редакция кода файла LibCode примет вид.
namespace LibClasses.
{.
public class _1.
{.
string s; // описание нестатического поля s.
//описание конструктора с одним параметром.
public _1(string s).
{.
this.s = s;
}.
public void Method ().
{.
System.Console.WriteLine (s);
}.
}.
}.
Двойной знак // (double slash) ограничивает область комментария от области кода в конце строки. Комментарий никак не воспринимается компилятором и пишется исключительно для пояснений кода.
Отметим правила описания конструктора экземпляра.
Имя конструктора должно совпадать с именем класса.
Конструктор не должен возвращать какой-либо тип, даже void.
Обычно предполагается создавать экземпляры класса вне самого класса. Поэтому следует в описание конструктора добавить модификатор доступа, отличный от private (вспомним, что для членов класса модификатор private принимается по умолчанию).
Описание поля s не имеет модификатора доступа и, следовательно, имеет доступ private. Поле s доступно лишь методам класса — в частности конструктору класса и методу Method (), где и используется. Поле s является нестатическим, поэтому имеет смысл лишь как поле экземпляра, но не как поле класса.
this.
В теле конструктора поле s записано как this. s, чтобы отличить от параметра конструктора, так же обозначенного s. Служебное слово this является ссылкой на текущий экземпляр (в Delphi экземпляр обозначается self). Например, при создании экземпляра inst1, которым мы сейчас займемся, в this будет находиться значение inst1.
Компиляция Solution1 при использовании новой редакции кода библиотечного класса LibClasses._1 приведет к ошибке в коде класса _2 проекта MainExe.
Дело в том, что, описав конструктор класса LibClasses._1 с параметром, мы автоматически отказались от существования конструктора без параметров, предлагаемого компилятором по умолчанию. Теперь в файле CodeFile2 в строке с описанием экземпляра inst1 класса LibClasses._1 следует в качестве параметра конструктора подставить какую-нибудь строку. Сделаем это и активизируем новую редакцию кода проекта MainExe и библиотеки Lib.
class _2.
{.
static LibClasses._1 inst1 = new LibClasses._1(«Anything as string»);
static void Main (string[] args).
{.
inst1.Method ();
System.Console.ReadLine ();
}.
}.
Результат должен быть ожидаемым. Строка.
Anything as string.
в черном окне.
Перегруженный конструктор (overloaded).
Можно описать произвольное число конструкторов одного класса с разным числом и разными типами параметров. Такое описание называется перегрузкой (overloading).
Например, в библиотечный класс LibClasses._1 можно добавить конструктор без параметров.
public _1().
{.
}.
и воспользоваться этим конструктором (убрав из предыдущего кода ссылку на строку «Anything as string») при создании экземпляра inst1 в классе _2 проекта MainExe. Проверьте работу новой версии кода. Результатом должно быть пустое черное окно.
При создании экземпляра конструктор обнуляет все поля. Поэтому в поле s, которое Method () должен вывести на экран, ничего нет (пустая строка).