1
왜 내가 T로 캐스팅해야하는지, 왜 Add2가 Bar를 매개 변수로 받아들이지 않는지 설명 할 수 있습니까?왜 유형 매개 변수로 형변환해야하며 제한 유형을 사용할 수 없습니까?
class Foo<T> where T : class, IBar
{
void Add1(IDo<T> @do) { @do.Stuff(new Bar() as T); }
// Add2 does not compile:
// Argument type Bar is not assignable to parameter Type T
void Add2(IDo<T> @do) { @do.Stuff(new Bar()); }
}
interface IBar {}
class Bar : IBar {}
interface IDo<in T> {
void Stuff(T bar);
}
'Add2'는'IBar' 또는 그 서브 클래스 중 하나를 받아들이지 않습니다. 'IDo'매개 변수를 지정해야합니다. –
mrt181
@ mrt181 : 예, 죄송합니다 - 마지막 호출은'foo.Add2 (do); '였습니다. 지금 고쳐졌고 - 잘하면 이것이 무엇이 잘못되었는지를 보여줍니다. –