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
}
}
Find<T>(value)
IEnumerable<T>
를 반환해야합니다.
왜 컴파일러는 동적이라고 생각합니까?
나는 이것을
Find<int>(val as object).ToList();
해결하지만, 이해하고 싶습니다.
왜일까요?
에릭 리 퍼트 (Eric Lippert)의 블로그 [Dynamic peragion, part one] (http://blogs.msdn.com/b/ericlippert/archive/2012/11/05/dynamic-contagion-part-one) .aspx) 및 [Dynamic contagion, part 2] (http://blogs.msdn.com/b/ericlippert/archive/2012/11/08/dynamic-contagion-part-two.aspx) – petelids
@PatricHofman, 나는 'Find (value)'뒤에 점을 넣으려고하면 '동적 표현'이라는 메시지가 나타납니다. 이 작업은 런타임에 해결됩니다. ' –
@olegwx : 알겠습니다. 명확한. 질문에서 그걸 놓쳤습니다. –