Новая динамическая переменная в C# 4.0
Вопрос
Могут ли динамические переменные в C# 4.0 быть членами класса, передаваться в методы или возвращаться из них?var из C# 3.0 не мог, но я нигде не видел упоминаний о том, возможно ли это с динамическим.
Решение
Все вышеперечисленное. Я опробовал их в VPC и смог сделать все это. См. документ «Новые функции в C #» здесь
Другие советы
Да.Есть большая разница между var
и dynamic
.
var
просто означает «позволить компилятору определить реальный тип переменной».
dynamic
является тип переменной - поэтому везде, где вы можете указать тип, вы можете указать dynamic
вместо этого, насколько я понимаю.(Я уверен, что из этого правила есть некоторые исключения, но это основная идея.)
РЕДАКТИРОВАТЬ:Криса Берроу первая запись в блоге на dynamic
(есть второй уже;ожидайте большего в ближайшее время) приводит пример класса, который использует dynamic
повсюду.
Этот фрагмент кода из книги " CLR via C #, 3rd Ed " показывает динамику в действии:
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); }
}
Когда я запускаю Main, я получаю следующий вывод:
M (Int32): 10
M (строка): AA