С# - в чем преимущества "частичных" классов?
Я спрашиваю об этом, потому что считаю довольно опасной особенностью распространять определение класса, так что вы не можете быть уверены, знаете ли вы все об этом. Даже если я нахожу три частичных определения, откуда я знаю, что там где-то не четвертый?
Я новичок в С#, но провел 10 лет с С++, может быть, почему я встряхнулся?
Во всяком случае, "частичная" концепция должна иметь большую пользу, которой я, очевидно, не хватает. Я хотел бы узнать больше о философии, стоящей за ней.
EDIT: Извините, пропустил этот дубликат при поиске существующих сообщений.
Ответы
Ответ 1
Частичные классы удобны при использовании генерации кода. Если вы хотите изменить сгенерированный класс (а не наследовать его), вы рискуете потерять свои изменения, когда код будет восстановлен. Если вы можете определить свои дополнительные методы и т.д. В отдельном файле, сгенерированные части класса можно воссоздать без использования вашего кода, созданного вручную.
Ответ 2
Большое преимущество - скрыть генерируемый компьютером код (от дизайнера).
Эрик Липперт недавно опубликовал сообщение в блоге о partial-keyword в целом.
Еще одно использование может заключаться в том, чтобы дать вложенным классам свой собственный файл.
Ответ 3
Два человека, редактирующих один и тот же класс, и код автогенерированного дизайнера - это две непосредственные функции, которые я вижу, которые были решены частичными классами и методами.
Сгенерированный разработчиком код в отдельном файле намного проще работать по сравнению с 1.1, где код часто может быть искажен Visual Studio (в формах Windows).
Visual Studio по-прежнему создает беспорядок синхронизации файла дизайнера, кода и дизайна файла с ASP.NET.
Ответ 4
Другое дело, что когда класс реализует несколько интерфейсов, вы можете разделить реализации интерфейса на разные файлы.
Таким образом, каждый файл кода имеет только код, который принадлежит реализации интерфейса. Это в соответствии с концепцией разделения проблем.
Ответ 5
Если у вас есть какой-то абсурдно большой класс, который по какой-то причине не может или не позволяет логически разделиться на более мелкие классы, вы можете по крайней мере физически разбить их на несколько файлов, чтобы работать с ним более эффективно. По сути, вы можете просматривать небольшие куски за раз, избегая прокрутки вверх и вниз.
Это может относиться к устаревшему коду, который, возможно, из-за какой-то тайной политики, не разрешается связываться с существующим API из-за многочисленных и укоренившихся зависимостей.
Не обязательно наилучшим образом использовать частичные классы, но, безусловно, дает вам альтернативный вариант для организации кода, который вы, возможно, не сможете изменить.
Ответ 6
может быть, слишком поздно, но, пожалуйста, позвольте мне добавить мои 2 цента тоже:
*. При работе над большими проектами распространение класса по отдельным файлам позволяет одновременно работать с несколькими программистами.
*. Вы можете легко написать свой код (для расширенной функциональности) для генерируемого класса VS.NET. Это позволит вам написать код вашей собственной потребности, не вникая в сгенерированный системой код