Diversão com o operador implícito

O operador implícito em C # pode fazer algumas coisas mágicas para legibilidade do código. Suponha, por exemplo, que eu tenha uma classe que ajude a impor limites.

public class Limit
{
private int _limit;
public Limit(int limit)
{
_limit
= limit;
}

public bool Reached(int test)
{
return _limit <= test;
}
}

Agora temos uma classe de grupo que limita o número de membros:

public class Group
{
private Limit _memberLimit;
private List<Member> _members;

public Group(Limit memberLimit)
{
_memberLimit
= memberLimit;
}

public void AddMember(Member member)
{
if(_memberLimit.Reached(_members.Count())
throw new LimitReachedException();
_members
.Add(member);
}
}

Para instanciar uma instância da classe Group ficaria assim:

var group = new Group(new Limit(5));

O que é bom, mas se usarmos o operador implícito na classe Limit, podemos tornar o código mais legível. Adicionar o método a seguir à classe Limit nos permitirá evitar a instanciação em linha.

public static implicit operator Limit(int limit)
{
return new Limit(limit);
}

Agora podemos instanciar a classe Group assim:

var group = new Group(5);

Ou para maior legibilidade, podemos incluir o nome do parâmetro:

var group = new Group(memberLimit: 5);

Isso pode adicionar um pouco de sobrecarga quando um novo desenvolvedor que não está familiarizado com o operador implícito começa a ler o código para entender como ele funciona. Mas do ponto de vista de aprender o que o código faz, esse tipo de legibilidade pode ser muito útil.

Depois de saber sobre o operador implícito, você começará a descobrir várias maneiras pelas quais ele pode ser benéfico.