Luffy1
@Luffy1
Student, Junior .NET programmer, C#, JS, HTML/CSS

Зачем нужны частичные методы, если можно сделать так(см. ниже)?

Пример с частичными методами:
partial class Partial_Class_and_Method
  {
    partial void DoSomethingElseElse(); 
    public void DoSomething()
    {
      WriteLine("I'm eating!");
      DoSomethingElseElse();
    }
  }                             
  partial class Partial_Class_and_Method
  {
    partial void DoSomethingElseElse()
    {
      WriteLine("I don't know what I'm doing!");
    }
    public void DoSomethingElse()
    {
      WriteLine("I'm sleeping!");
    }
  }

Пример без частичных методов:
partial class Partial_Class_and_Method
  {
    public void DoSomething()
    {
      WriteLine("I'm eating!");
      DoSomethingElseElse(); //Внимание на это место   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    }
  }                             
  partial class Partial_Class_and_Method
  {
    private void DoSomethingElseElse() //это даже с privat будет работать, ибо КЛАССЫ частичные
    {
      WriteLine("I don't know what I'm doing!");
    }
    public void DoSomethingElse()
    {
      WriteLine("I'm sleeping!");
    }
  }

Я смотрю(смотрел?) на функционал частичных методов как на то, что вне зависимости того, где находится тело реализации метода, мы можем использовать метод и в первом, и во втором классе, что удобно при командной работе, когда нам, например, нужно в классе B использовать метод класса A(я знаю, что одинаковое название должно быть, просто назвал так для удобства), для чего, как я думал раньше, нужно не только сделать частичные классы, а и методы, но, походу, хватит только того, что я сделаю классы частичными.
Тогда скажите, пожалуйста, и объясните, для чего конкретно нужны частичные методы. Насчёт автогенерируемого кода и что они могут использоваться там я слышал, но нифига не понял, что это за "автогенерируемый код", может, пока что просто не дошёл до работы с ним; если вам удобно, то расскажите про это, а также про другие случаи, когда могут понадобиться частичные методы.
  • Вопрос задан
  • 448 просмотров
Решения вопроса 1
AVollane
@AVollane
Начинающий C# разработчик
Здравствуйте. Существует несколько ситуаций, когда желательно разделение определения класса или метода:

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

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

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

Разделяемые методы особенно полезны для настройки автоматически созданного кода. Они позволяют зарезервировать имя и сигнатуру метода, чтобы автоматически созданный код мог вызвать метод, а разработчик мог сам решить, реализовывать этот метод или нет. Как и разделяемые классы, разделяемые методы позволяют организовать совместную работу автоматически созданного кода и кода, созданного человеком, без дополнительных затрат во время выполнения.
Источник: https://docs.microsoft.com/ru-ru/dotnet/csharp/pro...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы