Avatar ·

Como passar um método como parâmetro para outro método em C#?

Olá a todos! Comecei a estudar C# recentemente e me deparei com um problema. Tenho vários métodos que fazem quase a mesma coisa, mas com pequenas diferenças na lógica. Por exemplo, quero aplicar alguma operação a um array de números: somar todos os elementos, multiplicar, encontrar o máximo. Em vez de escrever três loops separados, gostaria de escrever um método universal que aceita uma "ação" (outro método) e a aplica ao array. Tentei fazer assim: ```csharp public void ProcessArray(int[] numbers, ??? operation) { for (int i = 0; i < numbers.Length; i++) { numbers[i] = operation(numbers[i]); } } ``` Mas não sei o que escrever no lugar de `???`. Ouvi falar sobre delegados, mas não entendo como declará-los e usá-los corretamente. Pode explicar com um exemplo simples como passar um método (por exemplo, `int Square(int x)`) para outro método? Também tenho interesse em saber se é possível passar métodos com diferentes números de parâmetros. E existem recursos no C# moderno...