C#4.0中的动态变量可以是类的成员,还是传入方法或从方法返回?来自C#3.0的var不可能,但我还没有看到任何关于动态是否可能的提及。
答案 0 :(得分:6)
是。 var
和dynamic
之间存在很大差异。
var
只是意味着“让编译器推断出变量的实际类型”。
dynamic
是变量的类型 - 因此,无论您在何处指定类型,都可以指定dynamic
,我理解它。 (我确信这有一些例外,但这是基本的想法。)
编辑:Chris Burrow的first blog entry on dynamic
(已经有second one;期待更多)给出了一个在整个地方都使用dynamic
的示例类。
答案 1 :(得分:5)
以上所有。我在VPC中尝试了它们并且能够完成所有这些。请参阅'New Features in C#' document here
答案 2 :(得分:2)
“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(String):AA