netlib.narod.ru< Ќазад | Ћглавление | „алее >

Программирование в тональности C#

На самом деле версия этой программы на С# не так уж сильно отличается от версии на 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< Ќазад | Ћглавление | „алее >

Сайт управляется системой uCoz