Sobes.tech
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.