Pergunta
variáveis ??dinâmicas pode em C # 4.0 ser membros de uma classe ou passado para ou retornados de métodos? var a partir de C # 3.0 não poderia, mas eu não vi qualquer lugar menção de saber se é possível ou não com dinâmica.
Solução
Todas as alternativas acima. Eu tentei-los no VPC e foi capaz de fazer tudo isso. Veja a 'novos recursos do C #' documento aqui
Outras dicas
Sim. Há uma grande diferença entre var
e dynamic
.
var
apenas significa "deixar o compilador inferir o tipo real da variável".
dynamic
é o tipo da variável - para qualquer lugar que você pode especificar um tipo, você pode especificar dynamic
em vez disso, como eu o entendo. (Estou certo de que há algumas exceções para isso, mas essa é a idéia básica.)
EDIT: primeira entrada do blog do Chris Burrow em dynamic
(há um segunda já;. esperar mais breve) dá um exemplo de classe que usos dynamic
todo o lugar
Este trecho de código do livro "CLR via C #, 3ª Ed" mostra dinâmica em ação:
using System;
using System.Dynamic;
static class DyanmicDemo
{
public static void Main() {
for(Int32 demo =0; demo < 2; demo++) {
dynamic arg = (demo == 0) ? (dynamic) 5 : (dynamic) "A";
dynamic result = Plus(arg);
M(result);
}
}
private static dynamic Plus(dynamic arg) { return arg + arg; }
private static void M(Int32 n) { Console.WriteLine("M(Int32): " + n); }
private static void M(String s) { Console.WriteLine("M(String): " + s); }
}
Quando eu executar Main, eu recebo o seguinte resultado:
H (Int32): 10
M (String): AA