小编ole*_* wx的帖子

将动态传递给方法时,结果是动态表达式,即使不是

在 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();可以解决这个问题,但我想了解它为什么会发生。

c# dynamic

3
推荐指数
1
解决办法
1058
查看次数

标签 统计

c# ×1

dynamic ×1