Vou deixar aqui mais uma pegadinha de C#, desta vez C# 4. Como das outras vezes, não vale usar o Visual Studio 2010 para checar a resposta antes de responder. Depois tudo bem!

Dado o seguinte código:

static int Funcao(int z) { return 1; }

static void Main()
{
   dynamic x = 3;
   DateTime y = Funcao(x);
}

O que deve acontecer?

  1. Não compila: tenho um erro em tempo de compilação na linha 6;
  2. Compila e em tempo de execução o inteiro é convertido para uma data usando uma conversão implícita no DLR;
  3. Compila e o inteiro é convertido para uma data usando uma conversão explícita do CLR, mas em tempo de compilação, com IL gerada pelo compilador na chamada da função;
  4. Compila mas tenho um erro em tempo de execução na linha 6, porque não é possível converter um inteiro para uma data.

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.