День сто двадцать четвёртый. #ВопросыНаСобеседовании

Самые часто задаваемые вопросы на собеседовании по C#

12. Что такое частичный класс в C#?

Частичный класс разделяет определение класса на два или более исходных (.cs) файлов. Вы можете создать определение класса в нескольких физических файлах, но при компиляции классов оно будет скомпилировано как один класс.



Преимущества

1. Вы можете разделить код разработки пользовательского интерфейса и код бизнес-логики, чтобы его было легко читать и понимать. Например, вы разрабатываете веб-приложение с использованием Visual Studio и добавляете новую веб-форму, тогда есть два исходных файла: «aspx.cs» и «aspx.designer.cs». Эти два файла имеют один и тот же класс с частичным ключевым словом. Класс ".aspx.cs" имеет код бизнес-логики, а "aspx.designer.cs" - определение элемента управления пользовательского интерфейса.

2. При работе с автоматически сгенерированным исходным кодом код можно добавить в класс, не создавая заново исходный файл. Например, вы работаете с LINQ to SQL и создаете файл DBML. Теперь, когда вы перетаскиваете таблицу, она создает частичный класс в designer.cs, и все столбцы таблицы имеют свойства в этом классе. Допустим, вам нужно добавить столбцы к этой таблице без добавления столбцов в таблицу базы данных. Вы можете создать отдельный файл для этого класса, который имеет свойства для этих столбцов, и будет частичным классом. То есть вы можете написать свой код, не вмешиваясь в код, сгенерированный системой.

3. Несколько разработчиков могут одновременно работать с кодом одного и того же класса.

4. Вы можете лучше поддерживать свое приложение, сжимая большие классы. Предположим, у вас есть класс с несколькими интерфейсами, поэтому вы можете создавать несколько исходных файлов для реализации каждого интерфейса. Легко понять и поддерживать реализацию интерфейса, в отдельном файле частичного класса.

public interface IRegister

{

//Функционал регистрации

}

public interface ILogin

{

//Функционал входа в систему

}



//Файл UserRegister.cs

public partial class User : IRegister, ILogin

{

//реализация IRegister

}

//Файл UserLogin.cs

public partial class User

{

//реализация ILogin

}



Некоторые моменты, на которые стоит обратить внимание:

1. Вам нужно использовать ключевое слово partial в каждой части частичного класса.

2. Имя каждой части частичного класса должно быть одинаковым, но имена файлов для каждой части частичного класса могут быть разными.

3. Все части частичного класса должны находиться в одном пространстве имен.

4. Каждая часть частичного класса должна находиться в одной сборке или DLL, другими словами, вы не можете создать частичный класс в исходных файлах другого проекта библиотеки классов.

5. Каждая часть частичного класса должна иметь одинаковый уровень доступа.

6. Если вы наследуете класс или интерфейс в частичном классе, то он наследуется во всех частях частичного класса.

7. Если часть частичного класса закрыта от наследования, тогда весь класс будет закрыт.

8. Если часть частичного класса является абстрактной, тогда весь класс будет абстрактным.



Источник: https://www.c-sharpcorner.com