C#4.0中的新动态变量

时间:2008-10-28 21:08:51

标签: c# c#-4.0

C#4.0中的动态变量可以是类的成员,还是传入方法或从方法返回?来自C#3.0的var不可能,但我还没有看到任何关于动态是否可能的提及。

3 个答案:

答案 0 :(得分:6)

是。 vardynamic之间存在很大差异。

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