한다고 가정으로 PARAMS 기능을 오버로드 스택 오버플로 예외.나는 두 가지 기능이를 IEnumerable
- 모호한 부분이있을 때 호출 할 오버로드를 지정할 수 있습니까?
- 제네릭 형식의 제약 조건이
params
형식에 대해 실행 가능한 옵션이라고 가정 할 때params
함수를 제네릭 클래스에서 호출하는 다른 방법이 있습니까?
미리 감사드립니다.
한다고 가정으로 PARAMS 기능을 오버로드 스택 오버플로 예외.나는 두 가지 기능이를 IEnumerable
params
형식에 대해 실행 가능한 옵션이라고 가정 할 때 params
함수를 제네릭 클래스에서 호출하는 다른 방법이 있습니까?미리 감사드립니다.
T[]
이 아닌 INotifyPropertyChanged[]
을 전달해야합니다. 일반적으로
Foo<T>(IEnumerable<T> items) where T : INotifyPropertyChanged
{
Foo(items.Cast<INotifyPropertyChanged>().ToArray());
}
, 그러나이처럼 params
버전의 IEnumerable
버전을 호출하는 것이 좋습니다 : 예를 들어
Foo(params INotifyPropertyChanged[] items)
{
Foo((IEnumerable<INotifyPropertyChanged>) items);
}
Foo<T>(IEnumerable<T> items) where T : INotifyPropertyChanged
{
//do stuff
}
입력을 시도 할 수 있습니다.
Foo<T>(IEnumerable<T> items) where T : INotifyPropertyChanged
{
Foo(items.Cast<INotifyPropertyChanged>().ToArray());
}
이것이 작동하지 않으면 나는 생각조차 모른다. 아마도 운이 없을 것이다.
'T []'형식을 'System.ComponentModel.INotifyPropertyChanged []'로 변환 할 수 없습니다. –
@Mark : 예; 방금 해봤 어. 결정된. – SLaks
후자의 옵션은 가능한 모호성을 없애기 때문에이 대답으로갑니다. 첫 번째 옵션은 더 복잡한 컴파일러입니다. – Jake