C# Language
Частичный класс и методы
Поиск…
Вступление
Частичные классы предоставляют нам возможность разбивать классы на несколько частей и в несколько исходных файлов. Во время компиляции все части объединяются в один класс. Все части должны содержать ключевое слово partial
, должны иметь одинаковую доступность. Все части должны присутствовать в одной и той же сборке, чтобы она включалась во время компиляции.
Синтаксис
- открытый частичный класс MyPartialClass {}
замечания
Частичные классы должны быть определены внутри одной и той же сборки и пространства имен в качестве класса, который они распространяют.
Все части класса должны использовать
partial
ключевое слово.Все части класса должны иметь такую же доступность;
public
/protected
/private
т. д.Если какая-либо часть использует ключевое слово
abstract
, тогда комбинированный тип считается абстрактным.Если какая-либо часть использует
sealed
ключевое слово, то комбинированный тип считается запечатанным.Если какая-либо часть использует базовый тип, тогда комбинированный тип наследуется от этого типа.
Комбинированный тип наследует все интерфейсы, определенные для всех частичных классов.
Частичные классы
Частичные классы предоставляют возможность разбивать объявление класса (обычно в отдельные файлы). Общая проблема, которая может быть решена с помощью частичных классов, позволяет пользователям изменять автоматически сгенерированный код, не опасаясь, что их изменения будут перезаписаны, если код будет регенерирован. Также несколько разработчиков могут работать с одним классом или методами.
using System;
namespace PartialClassAndMethods
{
public partial class PartialClass
{
public void ExampleMethod() {
Console.WriteLine("Method call from the first declaration.");
}
}
public partial class PartialClass
{
public void AnotherExampleMethod()
{
Console.WriteLine("Method call from the second declaration.");
}
}
class Program
{
static void Main(string[] args)
{
PartialClass partial = new PartialClass();
partial.ExampleMethod(); // outputs "Method call from the first declaration."
partial.AnotherExampleMethod(); // outputs "Method call from the second declaration."
}
}
}
Частичные методы
Частичный метод состоит из определения в одном объявлении частичного класса (как общий сценарий - в автогенерированном) и реализации в другом объявлении частичного класса.
using System;
namespace PartialClassAndMethods
{
public partial class PartialClass // Auto-generated
{
partial void PartialMethod();
}
public partial class PartialClass // Human-written
{
public void PartialMethod()
{
Console.WriteLine("Partial method called.");
}
}
class Program
{
static void Main(string[] args)
{
PartialClass partial = new PartialClass();
partial.PartialMethod(); // outputs "Partial method called."
}
}
}
Частичные классы, наследуемые от базового класса
При наследовании от любого базового класса только один частичный класс должен иметь указанный базовый класс.
// PartialClass1.cs
public partial class PartialClass : BaseClass {}
// PartialClass2.cs
public partial class PartialClass {}
Вы можете указать один и тот же базовый класс в нескольких неполных классах. Он будет помечен как избыточный с помощью некоторых инструментов IDE, но он правильно компилируется.
// PartialClass1.cs
public partial class PartialClass : BaseClass {}
// PartialClass2.cs
public partial class PartialClass : BaseClass {} // base class here is redundant
Вы не можете указать разные базовые классы в нескольких частичных классах, это приведет к ошибке компилятора.
// PartialClass1.cs
public partial class PartialClass : BaseClass {} // compiler error
// PartialClass2.cs
public partial class PartialClass : OtherBaseClass {} // compiler error