c# 4中的动态方法可以在每次调用时返回不同的数据类型吗?

本文关键字:返回 调用 数据类型 动态 方法 | 更新日期: 2023-09-27 18:13:31

如果我在c# 4中有一个动态方法。它可以用来返回,例如在一个调用-字符串,在另一个调用布尔值,并在另一个调用int?

还是在第一次运行时调用之后设置动态方法的返回类型?意思是,如果我第一次调用该方法,它返回一个布尔值,必须所有后续调用该方法也返回布尔值?

c# 4中的动态方法可以在每次调用时返回不同的数据类型吗?

一个dynamic方法可以在它选择的任何点自由地改变它的返回数据。例如

class Example {
  private int m_count;
  public dynamic GetData() {
    switch(m_count++) {
      case 0: return 42;
      case 1: return "hello world";
      default: return new object();
    }
  }
}

dynamic类型的方法与具有object返回类型的方法没有什么不同。它可以自由地返回与object兼容的任何值。唯一的问题是确保方法的调用者能够处理各种值。

任何对象都可以隐式地转换为动态类型,所以您应该能够这样做。在大多数情况下,像type object这样的函数是动态的。