Метод – це невелика підпрограма, яка виконує, в ідеалі, тільки одну функцію. Методи дозволяють скоротити обсяг коду. Методи разом з полями, є основними членами класу. Раніше, ми вже розглядали методи в уроці Функції в Сі-шарп, але зараз ми розглянемо їх під іншим кутом. У тому уроці ми розглядали статичні методи, а в цьому поговоримо про простих, і про різницю між ними.
Статичний метод – це метод, який не має доступу до полів об'єкта, і для виклику такого методу не потрібно створювати екземпляр (об'єкт) класу, в якому він оголошений.
Простий метод – це метод, який має доступ до даних об'єкта, і його виклик виконується через об'єкт.
Прості методи служать для обробки внутрішніх даних об'єкта.
Наведу приклад використання простого методу. Клас Телевізор, у нього є поле 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; // допустимо
}
}
Автор Swytos << попередня • наступна >> До змісту