그 이유는 무엇입니까? 끝내야 만하는 일입니까? 개념적으로 어렵습니까? 불가능한가요?왜 C# (4.0)은 제네릭 클래스 유형에서 공동 및 반공립을 허용하지 않습니까?
확실히 필드 쓰기는 항상 쓰기 때문에 필드 매개 변수를 사용할 수 없습니다. 하지만 그게 답이 될 수는 없지, 그렇지?
이 질문의 이유는 C# 4의 분산 지원에 대한 기사를 작성하고 있으며 위임자와 인터페이스로 제한되는 이유를 설명해야한다고 생각합니다. 증거의 부담을 역으로하기 만하면됩니다.
업데이트 : 에릭이 예를 들어 보았습니다. 이것에 대해
무엇 (즉 의미가 있는지 알고, 아직 :-)하지 않음)
public class Lookup<out T> where T : Animal {
public T Find(string name) {
Animal a = _cache.FindAnimalByName(name);
return a as T;
}
}
var findReptiles = new Lookup<Reptile>();
Lookup<Animal> findAnimals = findReptiles;
하나 개의 클래스에서 클래스 자체에서 개최되는 캐시 될 수 있음을 가지는 이유. 그리고 다른 종류의 애완 동물도 같은 이름을 지어서는 안됩니다! 나는 CLR을 주장하지는 않겠지 및 C#이 정도의 시간이 필요합니다 :
BTW,이 optional type parameters in C# 5.0 2 업데이트
:-) 날을 제공합니다. 그냥 그게 무슨 일이 있었는지 이해하려고 노력하지 않습니다.
물론 합리적인 예이지만 인터페이스를 사용하여 수행 할 수없는 사항은 표시하지 않았습니다. 그냥 ILookup 인터페이스을 만들고 Lookup 을 구현하십시오. 인터페이스 분산에 비해 훨씬 더 강력한 이점은 클래스 분산에 대한 시나리오입니까? –
실제로는 없습니다. 게다가 그것은 적은 코드입니다. 증거의 부담을 뒤집어 둡시다. 왜 그것이 지원되지 않는지 우리는 어떻게 설명 할 수 있습니까? 나는 그것을 실제로 구현할 것을 요구하지 않고있다. "그 방법은 항상 그랬다"라고 생각하지 않는다! :-) –
우리는 기능을 구현하지 * 않는 * 것에 대한 정당성을 제공 할 필요가 없습니다. 기능을 구현하지 않는 * 무료 *입니다. 오히려 기능 구현에 대한 정당성을 제시해야합니다. 기능을 통해 Microsoft에 수백만 달러의 비용이 발생하고 고객에게 시간과 비용을 들여야하는 부담이 커질 수 있습니다. –