netlib.narod.ru | < Ќазад | Ћглавление | „алее > |
На самом деле версия этой программы на С# не так уж сильно отличается от версии на C++.
CsDateClass.cs
//---------------------------------------------- // CsDateClass.cs (C) 2001 by Charles Petzold //---------------------------------------------- using System; class CsDateClass { public static void Main() { Date mydate = new Date(); mydate.month = 8; mydate.day = 29; mydate.year = 2001; Console.WriteLine("Day of year = {0}", mydate.DayOfYear()); } } class Date { public int year; public int month; public int day; public static bool IsLeapYear(int year) { return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)); } public int DayOfYear() { int[] ЊonthDays = new int[] { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; return MonthDays[month - 1] + day + (month > 2 && IsLeapYear(year) ? 1 : 0); } };
Одно из внесенных мною изменений в том, что метод Main, содержащийся теперь в собственном классе, я поместил в начало программы, а класс Date — в конец программы. Я был вправе это сделать, так как в С# не требуется упреждающее объявление.
В программе на C++ я определял объект Date так:
Date mydate;
В С# нужна конструкция:
Date mydate = new Date();
Как и при определении массива, ключевое слово new служит для выделения памяти новому объекту типа Date. (О скобках после Date я расскажу ниже.)
Еще одно изменение в том, что в программе на С# ключевое слово public требуется перед каждым полем и методом, к которому обращаются вне класса. Ключевое слово public называется модификатором доступа (access modifier), так как показывает, как можно обращаться к полям и методам. Альтернативами public являются private и protected, которые я рассмотрю дальше в этой главе.
Заметьте, что метод IsLeapYear возвращает значение типа bool. В методе DayOfYear я использовал условный оператор (? :), чтобы получить значение 1, прибавляемое ко дню високосного года. Я мог бы также привести выражение bool к типу int.
Давайте немного поговорим на жаргоне. Date — это класс (class). Класс Date содержит пять членов (member). Три члена — year, month и day — содержат данные и называются полями (fields). Остальные два члена содержат код и называются методами (methods). Переменная mydate является объектом (object) типа Date. Кроме того, ее называют экземпляром (instance) класса Date.
netlib.narod.ru | < Ќазад | Ћглавление | „алее > |