Метод – это небольшая подпрограмма, которая выполняет, в идеале, только одну функцию. Методы позволяют сократить объем кода.
Методы вместе с полями, являются основными членами класса.
Ранее, мы уже рассматривали методы в уроке Функции в Си-шарп, но сейчас мы рассмотрим их под другим углом.
В том уроке мы рассматривали статические методы, а в этом поговорим о простых, и о разнице между ними.
Статический метод – это метод, который не имеет доступа к полям объекта, и для вызова такого метода не нужно создавать экземпляр (объект) класса, в котором он объявлен.
Простой метод – это метод, который имеет доступ к данным объекта, и его вызов выполняется через объект.
Простые методы служат для обработки внутренних данных объекта.
Приведу пример использования простого метода. Класс Телевизор, у него есть поле switchedOn, которое отображает состояние включен/выключен, и два метода – включение и выключение:
Чтобы вызвать простой метод, перед его именем, указывается имя объекта. Для вызова статического метода необходимо указывать имя класса.
Статические методы, обычно, выполняют какую-нибудь глобальную, общую функцию, обрабатывают «внешние данные». Например, сортировка массива, обработка строки, возведение числа в степень и другое.
Пример статического метода, который обрезает строку до указанной длины, и добавляет многоточие:
Статический метод не имеет доступа к нестатическим полям класса:
Методы вместе с полями, являются основными членами класса.
Ранее, мы уже рассматривали методы в уроке Функции в Си-шарп, но сейчас мы рассмотрим их под другим углом.
В том уроке мы рассматривали статические методы, а в этом поговорим о простых, и о разнице между ними.
Статический метод – это метод, который не имеет доступа к полям объекта, и для вызова такого метода не нужно создавать экземпляр (объект) класса, в котором он объявлен.
Простой метод – это метод, который имеет доступ к данным объекта, и его вызов выполняется через объект.
Простые методы служат для обработки внутренних данных объекта.
Приведу пример использования простого метода. Класс Телевизор, у него есть поле 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;
}
}
{
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();
}
}
{
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; // допустимо
}
}
{
private int a;
private static int b;
public static void SomeMethod()
{
a=5; // ошибка
b=10; // допустимо
}
}
Комментариев нет:
Отправить комментарий