C# 언어의 여러 패턴 기능이 있습니다. 즉, 클래스는 특정 인터페이스에서 파생 될 필요가 없습니다. 일부 C# 구문/기능에 참여하기 위해 특정 패턴을 구현합니다.C#에서 구문 패턴을 활성화하는 구문은 무엇입니까?
는 경우를 예로 들어 살펴 보겠습니다 :
여기public class MyCollection : IEnumerable
{
public T Add(T name, T name2, ...) { }
public IEnumerator GetEnumerator() { return null; }
}
, TYPE
어떤 유형입니다. 기본적으로 우리는 IEnumerable
을 구현하는 클래스가 있으며 어떤 수의 매개 변수와도 Add()
이라는 메서드를 가지고 있습니다.
이 새로운 MyCollection
인스턴스의 다음 선언 할 수 있습니다 :
var mc = new MyCollection();
mc.Add(a1, a1, ...);
mc.Add(b1, b2, ...);
매직 :
new MyCollection{{a1, a2, ...}, {b1, b2, ...} }
에 상당입니다! 한편, 최근에 (나는 BUILD 이벤트에서 믿는다) Anders Hejlsberg는 새로운 await/async
이 패턴을 사용하여 구현 될 것이라는 것을 알려주었기 때문에 WinRT는 Task<T>
이 아닌 다른 것을 반환 할 수있었습니다. 그래서 제 질문은 두 가지이다
,
- 무엇 앤더스 얘기 한 패턴, 또는 뭔가 오해 않았다? 답은 WinRT가 제공하는 형식 인
IAsyncFoo
과 게시되지 않은 사양 사이의 어딘가에 있어야합니다. - C#에 다른 패턴이 이미 존재합니까?
async
를 들어
Jon Skeet의 블로그에서 비동기 작업이 어떻게 작동하는지 확인해야합니다. 그는 자신을 어떻게/어떻게/스스로 구현할 수 있는지를 보여줌으로써 그것을 아주 깊이 파고 들게합니다. –
이 블로그 게시물 [패턴 따라하기] (http://blogs.msdn.com/b/ericlippert/archive/2011/06/30/following-the-pattern.aspx)를 읽었는지 확실하지 않지만 재미 있을지도 몰라. – R0MANARMY