В этой статье мы узнаем, как и почему частичные классы и частичные методы могут быть реализованы на C #.
Существует множество ситуаций, когда вам может потребоваться разделить определение класса, например, при работе над крупномасштабными проектами нескольким разработчикам и программистам может потребоваться одновременная работа над одним и тем же классом. В этом случае мы можем использовать функцию под названием Partial Class .
Введение в частичный класс
При программировании на C # (или ООП) мы можем разделить определение класса на два или более исходных файла. Исходные файлы содержат раздел определения класса, и все части объединяются при компиляции приложения. Для разделения определения класса нам нужно использовать partial
ключевое слово.
Пример 1:
У нас есть проект, HeightWeightInfo
который показывает рост и вес.
У нас есть файл с именем as File1.cs
с частичным классом с именем Record. Он имеет две целочисленные переменные h & w и метод / конструктор с именем Record, который присваивает значения h & w.
namespace HeightWeightInfo ( class File1 ( ) public partial class Record ( private int h; private int w; public Record(int h, int w) ( this.h = h; this.w = w; ) ) )
Вот еще один файл с именем File2.cs с тем же частичным классом Record, который имеет только метод PrintRecord. Этот метод отобразит значения h & w.
namespace HeightWeightInfo ( class File2 ( ) public partial class Record ( public void PrintRecord() ( Console.WriteLine("Height:"+ h); Console.WriteLine("Weight:"+ w); ) ) )
Вот теперь мы видим основной метод проекта:
namespace HeightWeightInfo ( class Program ( static void Main(string() args) ( Record myRecord = new Record(10, 15); myRecord.PrintRecord(); Console.ReadLine(); ) ) )
Здесь у нас есть объект класса Record как myRecord, который передает значения параметров как 10 и 15 в h и w соответственно методу, определенному в File1.cs
.
Метод PrintRecord вызывается объектом myRecord, который определен в File2.cs
.
Это показывает, что partial
ключевое слово помогает объединить все атрибуты класса, определенные в различных файлах, для работы как одного класса.
Места, где partial
можно использовать класс:
- При работе над более крупными проектами с несколькими разработчиками это помогает разработчикам работать над одним и тем же классом одновременно.
- Коды могут быть добавлены или изменены в класс без повторного создания исходных файлов, которые автоматически генерируются IDE (т.е. Visual Studio).
Что нужно помнить о неполном классе
partial
Ключевое слово указать , что другие части класса могут быть определены в пространстве имен. Если мы пытаемся сделать класс частичным, обязательно использовать ключевое слово partial. Все части класса должны находиться в одном пространстве имен и быть доступными во время компиляции, чтобы сформировать окончательный тип. Все части должны иметь один и тот же модификатор доступа, т.е. частный, общедоступный и т. Д.
- Если какая-либо часть объявлена абстрактной, то весь тип считается абстрактным.
- Если какая-либо часть объявляется опломбированной, то опломбированным считается весь тип.
- Если какая-либо часть объявляет базовый тип, то весь тип наследует этот класс.
- Любой член класса, объявленный в частичном определении, доступен всем остальным частям.
- Все части частичного класса должны находиться в одном пространстве имен.
** Примечание:partial
модификатор не доступен на делегат или перечисление деклараций
Введение в частичные методы
Частичный класс может содержать частичный метод. Одна часть класса содержит сигнатуру метода. Необязательная реализация может быть определена в той же или другой части. Если реализация не предоставлена, то метод и все вызовы удаляются во время компиляции.
Пример 2:
Рассмотрим в качестве примера частичный класс, Car
в file1.cs
котором есть три метода InitializeCar (), BuildRim () и BuildWheels (). Среди этих методов InitializeCar определяется как partial
.
public partial class Car ( partial void InitializeCar(); public void BuildRim() ( ) public void BuildWheels() ( ) )
И у нас есть еще один файл с именем as, в file2.cs
котором есть два метода BuildEngine и InitializeCar. Метод InitializeCar - это частичный метод, который также определен в file1.cs
.
public partial class Car ( public void BuildEngine() ( ) partial void InitializeCar() ( string str = "Car"; ) )
Объявление частичного метода состоит из двух частей:
- Определение как в
file1.cs
. - Реализация как в
file2.cs
.
Они могут находиться в отдельных частях частичного класса или в одной и той же части.
Что нужно помнить о частичном методе
partial
ключевое слово.- тип возврата
void
. - неявно
private
. - и не может быть
virtual
.