Спільні класи і методи (посібник із програмування в c #), microsoft docs

Можна розділити визначення класу або структури. інтерфейсу або методу між двома або більше вихідними файлами. Кожен вихідний файл містить частину визначення класу або методу, а під час компіляції додатка всі частини об'єднуються.

Спільні класи

Існує кілька ситуацій, коли бажано поділ визначення класу.

При роботі над великими проектами розподіл класу між різними файлами дозволяє декільком програмістам працювати з ним одночасно.

При роботі з використанням автоматично створюваного джерела код можна додавати в клас без повторного створення файлу джерела. Visual Studio використовує цей підхід при створенні форм Windows Forms, коду оболонки веб-служби і т. Д. Можна створити код, який використовує ці класи, без необхідності зміни файлу, створеного в Visual Studio.

Щоб розділити визначення класу, використовуйте модифікатор ключового слова partial. як показано нижче:

Ключове слово partial вказує, що інші частини класу, структури або інтерфейсу можуть бути визначені в просторі імен. Всі частини повинні використовувати ключове слово partial. Для формування остаточного типу всі частини повинні бути доступні під час компіляції. Всі частини повинні мати однакові модифікатори доступу, наприклад public. private і т. д.

Якщо будь-яка з частин оголошена абстрактної, то весь тип буде вважатися абстрактним. Якщо будь-яка з частин оголошена запечатаній, то весь тип буде вважатися запечатаним. Якщо будь-яка з частин оголошує базовий тип, то весь тип буде наслідувати цей клас.

Примітка

У наступному прикладі показано, що вкладені типи можуть бути розділяються, навіть якщо тип, в який вони вкладені, не є розділяються.

Наступні елементи об'єднуються з усіх визначень розділяється типу:

У наступному прикладі показано, що можна також розробити колективні структури і інтерфейси.

Спільні методи

Розділяється клас або структура можуть містити розділяється метод. Одна частина класу містить сигнатуру методу. У тій же або в іншій частині можна визначити додаткову реалізацію. Якщо реалізація не надано, метод і всі виклики методу видаляються під час компіляції.

Спільні методи дозволяють розробнику однієї частини класу визначити метод, схожий з подією. Розробник іншій частині класу може вирішити, реалізовувати цей метод чи ні. Якщо метод не реалізований, то компілятор видаляє сигнатуру методу і всі виклики цього методу. Виклики методу, включаючи будь-які результати, які могли б статися від оцінки аргументів на виклики, не мають ефекту під час виконання. Таким чином, будь-який код в разделяемом класі може вільно використовувати розділяється метод, навіть якщо реалізація не надано. Під час компіляції і виконання програми не виникнуть ніякі помилки, якщо метод буде викликаний, але не реалізований.

Спільні методи особливо корисні для настройки автоматично створеного коду. Вони дозволяють зарезервувати ім'я і сигнатуру методу, щоб автоматично створений код міг викликати метод, а розробник міг сам вирішити, реалізовувати цей метод чи ні. Як і колективні класи, що розділяються методи дозволяють організувати спільну роботу автоматично створеного коду і коду, створеного людиною, без додаткових витрат під час виконання.

Спільні методи можуть мати параметри ref. але не можуть мати параметри out.

Спільні методи неявно мають модифікатор private і тому не можуть мати модифікатор virtual.

Спільні методи не можуть мати модифікатор extern. оскільки наявність тіла визначає, чи виконується їх визначення або реалізація.

Спільні методи можуть мати модифікатори static і unsafe.

Можна використовувати делегат в якості певного і реалізованого розділяється методу, але його не можна використовувати в якості розділяється методу, який тільки визначено.

Специфікація мови C #

Додаткові відомості див. У специфікації мови C #. Специфікація мови є розпорядчим джерелом інформації про синтаксис і використанні мови C #.