Wenn Sie dynamic an method übergeben, ist das Ergebnis ein dynamischer Ausdruck, auch wenn er nicht @ is

ls ich in C # 5 versuchte, eine Dynamik als Methodenparameter zu übergeben, wurde das Ergebnis aus irgendeinem Grund dynamisc

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
    }
}

Find<T>(value) muss @ zurückgebIEnumerable<T>. Warum hält der Compiler das für dynamisch?
Ich weiß dasFind<int>(val as object).ToList(); löst das, aber ich möchte verstehen,WARU es passiert

Antworten auf die Frage(2)

Ihre Antwort auf die Frage