元组 return 在 c# 中动态传递参数作为动态

Tuple return dynamic in c# while passing parameter as dynamic

根据图片显示 CheckDynamic 有两种方法,它们具有不同的 return 类型,但仍然允许 return 从一个到另一个并允许构建。

当 Tuple 不是 return 两种方法的类型时,它不应该给出构建错误吗? 另外,当我填写任何变量时,为什么它是动态类型?

Should it not it gives build error while Tuple is not return type of both method?

不,不应该。 As msdn docs 说:

C# 4 introduces a new type, dynamic. The type is a static type, but an object of type dynamic bypasses static type checking. At compile time, an element that is typed as dynamic is assumed to support any operation. However, if the code is not valid, errors are caught at run time.

这就是为什么您 Build succeeded.

但是,它会在运行时抛出异常。

因此您的编译器假定您可以执行任何操作,因为 dynamic 用作函数中的参数。这就是编译器成功构建的原因。但是,在运行时它会抛出类似这样的错误:

Cannot implicitly convert type System.Tuple<int> to Cup