[問題] 不使用delegate完成相同的功能?
這是使用delegate的範例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Delegate
{
class Delegate
{
public delegate bool NumberPredicate(int number);
static void Main(string[] args)
{
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
NumberPredicate evenPredicate = IsEven;
// Call IsEven using a delegate variable
Console.WriteLine("Call IsEven using a delegate variable: {0}",
evenPredicate(4));
// filter the even numbers
List<int> evenNumbers = FilterArray(numbers, evenPredicate);
DisplayList("Use IsEven to filter even numbers: ", evenNumbers);
// filter the odd numbers
List<int> oddNumbers = FilterArray(numbers, IsOdd);
DisplayList("Use IsOdd to filter odd numbers: ", oddNumbers);
// filter numbers greater than 5
List<int> numberOver5 = FilterArray(numbers, IsOver5);
DisplayList("Using IsOver5 to filter numbers over 5: ",
numberOver5);
} // end Main
private static List<int> FilterArray(int[] intArray, NumberPredicate
predicate)
{
List<int> result = new List<int>();
foreach (int item in intArray)
{
if (predicate(item))
result.Add(item);
}
return result;
} // end method FilterArray
private static bool IsEven(int number)
{
return (number % 2 == 0);
} // end method IsEven
private static bool IsOdd(int number)
{
return (number % 2 == 1);
} // end method IsOdd
private static bool IsOver5(int number)
{
return (number > 5);
} // end method IsOver5
private static void DisplayList(string description, List<int> list)
{
Console.Write(description);
foreach (int item in list)
Console.Write("{0} ", item);
Console.WriteLine();
} // end method DisplayList
}
}
其中是利用delegate來取出奇數、偶數和超過5的數字
想請問不用delegate完成相同的功能的方法
是利用loop和判斷式來達到相同的功能嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.66.7
→
05/24 22:03, , 1F
05/24 22:03, 1F
推
05/25 13:51, , 2F
05/25 13:51, 2F
→
05/25 13:52, , 3F
05/25 13:52, 3F