Mais uma pegadinha:

Porque esse código está errado?

delegate void MeuDelegate<in T>(T t) where T : struct;

Vou ajudar um pouquinho.

O código acima compila perfeitamente no compilador do C# 4 do Visual Studio 2010, sem nenhum erro ou warning. O “in” presente em <in T> significa que o parametro “t”, do tipo “T”, é contravariante neste argumento. Variância é algo novo no C# 4, e você pode ler mais sobre ela no blog do Eric Lippert (ou traduzido no blog do Felipe Fujiy).

Como sempre vocês podem me mandar as respostas por comentários, email, ou sinal de fumaça. O melhor é comentários, porque todo mundo consegue ver, e está muito frio para eu ir lá fora observar sinais de fumaça.

A resposta vem na quinta-feira.

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.