четверг, 30 декабря 2021 г.

Методы в Си-шарп. Разница между простыми и статическими


Метод – это небольшая подпрограмма, которая выполняет, в идеале, только одну функцию. Методы позволяют сократить объем кода.

Методы вместе с полями, являются основными членами класса.

Ранее, мы уже рассматривали методы в уроке Функции в Си-шарп, но сейчас мы рассмотрим их под другим углом.

В том уроке мы рассматривали статические методы, а в этом поговорим о простых, и о разнице между ними.

Статический метод – это метод, который не имеет доступа к полям объекта, и для вызова такого метода не нужно создавать экземпляр (объект) класса, в котором он объявлен.

Простой метод – это метод, который имеет доступ к данным объекта, и его вызов выполняется через объект.

Простые методы служат для обработки внутренних данных объекта.

Приведу пример использования простого метода. Класс Телевизор, у него есть поле switchedOn, которое отображает состояние включен/выключен, и два метода – включение и выключение:

class TVSet
{
   private bool switchedOn;

   public void SwitchOn()
   {
     switchedOn = true;
   }
   public void SwitchOff()
   {
     switchedOn = false;
   }
}
class Program
{
   static void Main(string[] args)
   {
     TVSet myTV = new TVSet();
     myTV.SwitchOn(); // включаем телевизор, switchedOn = true;
     myTV.SwitchOff(); // выключаем телевизор, switchedOn = false;
   }
}

Чтобы вызвать простой метод, перед его именем, указывается имя объекта. Для вызова статического метода необходимо указывать имя класса.

Статические методы, обычно, выполняют какую-нибудь глобальную, общую функцию, обрабатывают «внешние данные». Например, сортировка массива, обработка строки, возведение числа в степень и другое.

Пример статического метода, который обрезает строку до указанной длины, и добавляет многоточие:

class StringHelper
{
   public static string TrimIt(string s, int max)
   {
     if (s == null)
       return string.Empty;
     if (s.Length <= max)
       return s;

     return s.Substring(0, max) + "...";
   }
}
class Program
{
   static void Main(string[] args)
   {
     string s = "Очень длинная строка, которую необходимо обрезать до указанной длины и добавить многоточие";
     Console.WriteLine(StringHelper.TrimIt(s, 20)); //"Очень длинная строка…"
     Console.ReadLine();
   }
}

Статический метод не имеет доступа к нестатическим полям класса:

class SomeClass
{
   private int a;
   private static int b;

   public static void SomeMethod()
   {
     a=5; // ошибка
     b=10; // допустимо
   }
}

Комментариев нет:

Отправить комментарий

Паттерн 'Репозиторий' в ASP.NET

  Последнее обновление: 1.11.2015         Одним из наиболее часто используемых паттернов при работе с данными является паттерн 'Репозито...