举个简单例子,下面的例子中 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Xml.Linq;namespace ConsoleCSharp { class Program { static void Main(string[] args) { List<int> l = new List<int>(); l = Enumerable.Range(1, 11).ToList(); l.Sort(delegate(int i, int j) { return j - i; } ); Array.ForEach(l.ToArray(), delegate(int i) { Console.WriteLine(i); }); } } } 第一个匿名函数用的地方,参数是Comparison<int> comparison 第2个匿名函数用的地方,参数是Action<int> action 这2个匿名函数都是我试出来的,凭感觉写的,为什么这里可以用匿名函数呢? 泛型在这里的应用我有点迷糊,<int> 的意思返回值是int还是说他的操作对象是int ?
第二个问题, 明显只能通过return.....,我也不知道有米其他方式,
唉, 好像等于没说.
在使用时应该注意变量的作用域问题,和Linq中很多延时执行而带来的变量生命期的问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Xml.Linq;namespace ConsoleCSharp
{
class Program
{
static void Main(string[] args)
{
List<int> l = new List<int>();
l = Enumerable.Range(1, 11).ToList();
l.Sort(delegate(int i, int j)
{
return j - i;
}
);
Array.ForEach(l.ToArray(), delegate(int i) { Console.WriteLine(i); });
}
}
}
第一个匿名函数用的地方,参数是Comparison<int> comparison
第2个匿名函数用的地方,参数是Action<int> action
这2个匿名函数都是我试出来的,凭感觉写的,为什么这里可以用匿名函数呢?
泛型在这里的应用我有点迷糊,<int> 的意思返回值是int还是说他的操作对象是int ?
我们看下原型就知道是操作对象还是返回值了,如果是TResult,那么就是返回值了,其它都是输入的参数。
例如:Func<TResult>,这里面的泛型名TResult就是返回值类型。
2. 匿名方法的返回值是不是只能通过retrun 后面的值来确定?
--------------------------------------------------------1. 当前语境下需要方法参数时,可使用匿名方法eg: 一个方法需要一个委托(方法)参数的时候,参数就可以写成 匿名方法 的形式。匿名方法 其实 本质是 编译器帮你做了一部分工作,具体工作内容 可以和 C# 1.1 时 使用委托当参数的语法 比对得知。2.匿名方法的返回值 不是 retrun 时确定的,而是调用它的语境确定的
这个int是什么,和他的原型有关系。
比如Action<int> 这个int就一定是参数。对吧
Action<T> 和 Comparison<T> 都属于此类
如果委托类型的返回值类型为void,匿名方法里便不能返回任何值;
如果委托类型的返回值类型不为void,匿名方法里返回的值必须和委托类型的返回值兼容。匿名方法并不只是“匿名”的方法甚至可以构造一个闭包给开发带来极大的便利。
IEnumerable<DateTime> dates = dateStrings.Select(
s => DateTime.ParseExact(s, "yyyy-MM-dd", null));
2,用于lambda表达式,所表达的,函数参数,这种参见3.5之中的很多例子特别是Linq 。
.NET Delegates: A C# Bedtime Story其中讲述了
紧耦合-->接口-->委托/事件-->匿名委托感觉用来理解接口,委托,匿名委托是一个很不错的例子.http://www.sellsbrothers.com/writing/default.aspx?content=delegates.htm
怎么看像是java中的一些概念