在 C# 5 中,当我尝试将动态作为方法参数传递时,结果由于某种原因变成了动态。
class Program
{
static void Main(string[] args)
{
dynamic value = "John";
Find<int>(value).ToList();
}
public static IEnumerable<T> Find<T>(object value)
{
//SOME LOGIC
yield return default(T); //REAL RESULT
}
}
Run Code Online (Sandbox Code Playgroud)
Find<T>(value)必须返回IEnumerable<T>。为什么编译器认为它是动态的?
我知道这Find<int>(val as object).ToList();可以解决这个问题,但我想了解它为什么会发生。