编辑代码

using System;
delegate double Function(double x);
class Multiplier
{
 double _factor;
 public Multiplier(double factor) => _factor = factor;
 public double Multiply(double x) => x * _factor;
}
class DelegateExample
{
	 static double[] Apply(double[] a, Function f)
	 {
		 var result = new double[a.Length];
		 for (int i = 0; i < a.Length; i++) result[i] = f(a[i]);
			return result;
	 }
	
	public static void Log(double[] t){
		foreach (double item in t)
		{
			Console.WriteLine(item);
		}
	}

	 public static void Main()
	 {
		 double[] a = { 0.0, 0.5, 1.0 };
			 Log(a);
		 double[] squares = Apply(a, (x) => x * x);
			 Log(squares);
		 double[] sines = Apply(a, Math.Sin);
			 Log(sines);
		 Multiplier m = new Multiplier(2.0);
		 double[] doubles = Apply(a, m.Multiply);
			 Log(doubles);
	 }
}