Можно ли заменить private метод на делегат + лямбду?

Да, в C# можно заменить private метод на делегат с использованием лямбда-выражений. Лямбда-выражения позволяют определить анонимный метод, который может быть использован в качестве значения делегата.

Для замены private метода на делегат с лямбда-выражением, сначала нужно определить делегат, который будет совместим со сигнатурой метода. Например, если у нас есть private метод с сигнатурой void MyMethod(string arg), мы можем определить делегат с такой же сигнатурой:

delegate void MyDelegate(string arg);

Затем, вместо вызова прямо из кода private метода, мы можем создать экземпляр делегата и передать ему лямбда-выражение, которое будет выполнять те же действия, что и приватный метод. Например:

MyDelegate myDelegate = (arg) =>
{
    // Действия, которые были в приватном методе
    Console.WriteLine(arg);
};

Теперь мы можем использовать myDelegate в любом месте, где раньше использовался бы вызов приватного метода. Например:

public void SomePublicMethod()
{
    // Вызываем делегат, передавая ему аргумент
    myDelegate("Hello, World!");
}

Обратите внимание, что в отличие от приватного метода, делегат и лямбда-выражение позволяют передавать и использовать анонимные методы для работы с другими объектами или переменными.