C# 之委托学习(1)

今天学习C#的委托用法,跟大家分享一下:

委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法。我们看看下面的例子:

int i = 100;    //定义一个整形数。

public delegate string GetString();   //定义一个委托GetString,它返回string类型。

GetString firstMethod = new GetString(i.ToString);    //实例化类型为GetString的一个委托。

不多说了,下面来看一个例子,很简单的一个例子,大家都可以看懂的:

View Code
   
     
using System;
using System.Collections.Generic;
using System.Text;

namespace Wrox.ProCSharp.Delegates
{
class MathOperations
{
public static double MultiplyByTwo( double value)
{
return value * 2 ;
}

public static double Square( double value)
{
return value * value;
}
}


delegate double DoubleOp( double x);

class MainEntryPoint
{
static void Main()
{
DoubleOp[] operations
=
{
MathOperations.MultiplyByTwo,
MathOperations.Square
// new DoubleOp(MathOperations.MultiplyByTwo),
// new DoubleOp(MathOperations.Square)
};

for ( int i = 0 ; i < operations.Length; i ++ )
{
Console.WriteLine(
" Using operations[{0}]: " , i);
ProcessAndDisplayNumber(operations[i],
2.0 );
ProcessAndDisplayNumber(operations[i],
7.94 );
ProcessAndDisplayNumber(operations[i],
1.414 );
Console.WriteLine();
}
Console.ReadLine();
}

static void ProcessAndDisplayNumber(DoubleOp action, double value)
{
double result = action(value);
Console.WriteLine(
" Value is {0}, result of operation is {1} " , value, result);
}
}
}

理解委托的一种好方式是把委托当作给方法签名和返回类型指定名称。

ProcessAndDisplayNumber(operations[i], 2.0);   // 表示把委托传递给ProcessAndDisplayNumber()方法。

今天就写到这里,有很多不足的地方请多多请教。

你可能感兴趣的:(C#)