C # - каковы преимущества "частичных" классов? - PullRequest
13 голосов
/ 18 сентября 2009

Я спрашиваю об этом, потому что нахожу довольно опасной возможностью распространять определение класса, так что вы не можете быть уверены, что знаете все об этом. Даже если я найду три частичных определения, откуда мне знать, что где-то нет четвертого?

Я новичок в C #, но провел 10 лет с C ++, может быть, поэтому я потрясен?

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

РЕДАКТИРОВАТЬ: Извините, пропустил этот дубликат при поиске существующих сообщений.

Ответы [ 6 ]

31 голосов
/ 18 сентября 2009

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

11 голосов
/ 18 сентября 2009

Большим преимуществом является скрытие сгенерированного компьютером кода (разработчиком).
У Эрика Липперта есть недавнее сообщение в блоге о частичном ключевом слове в целом.

Другое использование может дать вложенным классам собственный файл.

3 голосов
/ 18 сентября 2009

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

Таким образом, каждый кодовый файл имеет только тот код, который относится к реализации интерфейса. В соответствии с концепцией разделения интересов .

3 голосов
/ 18 сентября 2009

Два человека, редактирующие один и тот же класс, и автоматически сгенерированный дизайнерский код - две непосредственные функции, которые я вижу, которые были решены частичными классами и методами.

Наличие сгенерированного дизайнером кода в отдельном файле намного проще в работе по сравнению с 1.1, где ваш код часто может быть искажен Visual Studio (в формах Windows).

Visual Studio все еще делает беспорядок синхронизации файла конструктора, кода и файла дизайна с ASP.NET.

2 голосов
/ 18 сентября 2009

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

Это может относиться к устаревшему коду, который, возможно, из-за какой-то непонятной политики не может связываться с существующим API из-за многочисленных и укоренившихся зависимостей.

Не обязательно наилучшее использование частичных классов, но, безусловно, дает вам альтернативный вариант организации кода, который вы не сможете изменить.

1 голос
/ 16 июля 2011

возможно, уже слишком поздно, но, пожалуйста, позвольте мне добавить свои 2 цента тоже:

*. При работе над большими проектами распространение класса на отдельные файлы позволяет нескольким программистам работать с ним одновременно.

*. Вы можете легко написать свой код (для расширенной функциональности) для сгенерированного класса VS.NET. Это позволит вам написать собственный код, не мешая сгенерированному системой коду

...