Junior — Middle
Um delegado na linguagem de programação é um tipo por referência ou por valor?
sobes.tech IA
Resposta da IA
Na linguagem C#, os delegados são tipos por referência. Isso significa que, ao atribuir um delegado a outra variável ou passá-lo para um método, é copiada a referência ao objeto delegado, e não o próprio objeto.
Os delegados são objetos que encapsulam métodos e armazenam uma referência a esses métodos. Graças a isso, é possível chamar métodos através do delegado, bem como combinar vários métodos em um único delegado (delegados multicast).
Exemplo:
public delegate void MyDelegate(string message);
MyDelegate d1 = Console.WriteLine;
MyDelegate d2 = d1; // d2 referencia o mesmo delegado que d1
Console.WriteLine(object.ReferenceEquals(d1, d2)); // True
Portanto, os delegados em C# são tipos por referência.