int와 double과 같은 다른 반환 유형의 메소드가 있습니다.다른 retun 유형을 사용하는 일반 대리자
하지만 지금은 다른 방법으로 반복 해 보겠습니다.
나는 이런 식으로 시도 :
delegate T MeDelegate<T>();
class Program
{
static void Main(string[] args)
{
Func<int> d = ReturnFive;
d += ReturnTen;
d += ReturnTwentyTwo;
d += returnDoubles;
foreach (int i in GetAllReturnValues(d))
Console.WriteLine(i);
Console.ReadKey();
}
static IEnumerable<TArgs> GetAllReturnValues<TArgs>(Func<TArgs> d)
{
List<int> ints = new List<int>();
foreach (Func<TArgs> item in d.GetInvocationList())
yield return item();
}
static int ReturnFive() { return 5; }
static int ReturnTen() { return 10; }
static int ReturnTwentyTwo() { return 22; }
static double returnDoubles() { return 1.0; }
}
및 당연히이 : Func<int> d
나던 작품. 그러나 이것을 향상시키는 방법은 무엇입니까?
은 당신이 원하는 여부를 무슨 경우
. func의 타입은 컴파일시에 설정되며, double이 아닙니다. 여기에 어떤 것을 시도하고 있는지 확실하지 않지만 이와 같은 작업을 수행해야하는 경우 반환 값을 캡슐화하고 제네릭을 완전히 삭제하는 유형을 반환하십시오. – Will
방금 d에 이벤트를 첨부하고 있습니다. 함수에 대한 포인터를 d에 넣고 싶습니다. func [] d = 새 기능 [] {ReturnFive, ReturnTen, ReturnTwentyTwo, returnDoubles}; –
Muckeypuck