C# 4.0에서는 다음 코드와 같이 동적 메서드 매개 변수를 사용할 수 있습니까?C에서 메서드 매개 변수가 동적 일 수 있습니까?
C# 4.0에서는 동적 키워드에 대한 멋진 예가 많이 있지만 위와는 다릅니다. 물론이 질문은 파이썬이 어떻게 작동하는지에 영향을받습니다.
C# 4.0에서는 다음 코드와 같이 동적 메서드 매개 변수를 사용할 수 있습니까?C에서 메서드 매개 변수가 동적 일 수 있습니까?
C# 4.0에서는 동적 키워드에 대한 멋진 예가 많이 있지만 위와는 다릅니다. 물론이 질문은 파이썬이 어떻게 작동하는지에 영향을받습니다.
예, 물론 그렇게 할 수 있습니다. 정적 과부하 해결을 위해 object
매개 변수로 취급되며 정적으로 호출됩니다. 그 방법 안에서 당신이하는 일은 동적 일 것입니다. 예를 들어 :
using System;
class Program
{
static void Foo(dynamic duck)
{
duck.Quack(); // Called dynamically
}
static void Foo(Guid ignored)
{
}
static void Main()
{
// Calls Foo(dynamic) statically
Foo("hello");
}
}
은 "동적 인 오브젝트와 같은"성격은 단지 dynamic
매개 변수를 사용하여 하나의 단지 object
매개 변수 과부하 및 하나를 가질 수 없음을 의미합니다.
네, 그렇게 할 수 있습니다. C# 4.0 사양에 명시된 같이 유형이 예상되는 곳, 문법은 dynamic
을 지원하도록 확장된다
유형 :
...
dynamic
여기에는 물론 매개 변수 정의가 포함됩니다.
예; 예를 들어
http://blogs.msdn.com/cburrows/archive/2008/11/14/c-dynamic-part-vi.aspx
크리스 '다른 블로그
. 또는 VS2010 Beta2를 들고 시도해보십시오.이 문서는 매우 비효율적 인 후기 바인딩을 의미합니다. 강력한 타이핑은 친구입니다! –
@David : DLR의 역동적 인 동작은 매우 능률적 일 정도로 능률적으로 수행됩니다. 예, 늦은 시각이지만 예상 한만큼 비효율적이지 않습니다. –
이 게시물에 대단히 감사합니다. – Darren
ChrisB (http://blogs.msdn.com/b/cburrows/archive/2010/04/01/errata-dynamic-conversions-and-overload-resolution.aspx)가이 업데이트 된 기사를 올바르게 이해하고 있다면 이 동작이 변경된 것 같습니다. 호출과 같은 사운드는 항상 런타임에 결정된 매개 변수의 유형에 따라 과부하가 선택된 상태에서 동적으로 전달됩니다. – BitMask777
@ BitMask777 : * 인수 * (또는 대상) 중 하나가 동적 인 경우에만. 그래서 내 대답의 코드에서'Foo ("hello")'는 동적 인수를 갖지 않으므로'Foo (dyanmic)'는 정적으로 바인딩됩니다. –