WCF各个模块的联系:
- Contracts:一个类库项目,定义服务契约(Service Contract),引用System.ServiceMode程序集(WCF框架的绝大部分实现和API定义在该程序集中);
- Services:一个类库项目,提供对WCF服务的实现。定义在该项目中的所有WCF服务实现了定义在Contracts中相应的服务契约,所以Services具有对Contracts项目的引用;
- Hosting:一个控制台(Console)应用,实现对定义在Services项目中的服务的寄宿,该项目须要同时引用Contracts和Services两个项目和System.ServiceMode程序集;
- Client:一个控制台应用模拟服务的客户端,该项目引用System.ServiceMode程序集。
委托的创建步骤:
- 用delegate关键字创建一个委托,包括声明返回值和参数类型
- 使用的地方接收这个委托
- 创建这个委托的实例并指定一个返回值和参数类型匹配的方法传递过去
Action<
double
,
double
> printProduct = (x, y) => { Console.WriteLine(x * y); };
Func<
double
[],
double
[],
double
> dotProduct = (x, y) =>
{
var
dim = Math.Min(x.Length, y.Length);
var
sum = 0.0;
for
(
var
i = 0; i != dim; i++)
sum += x[i] + y[i];
return
sum;
};
如果只有一个参数,不需要写()
如果只有一条执行语句,并且我们要返回它,就不需要{},并且不用写return
Lambda可以异步执行,只要在前面加上async关键字即可
Var关键字在大多数情况下都不能使用
怕你知道,又怕你不知道,怕你知道却又假装不知道!