将lambda表达式作为函数参数传递

时间:2015-05-18 04:27:14

标签: c# lambda

foo(Func<bool,bool> lambda) 这样的函数可以作为参数传递给方法作为函数:

()=>{int x=8; x=x+2;}

我们可以使用像bar这样的lambda表达式,它不会带任何东西并返回任何内容。让我说我想将这样的函数作为参数传递给另一个方法function searchLinks(html) { var $tmp = $('<div />', { html: html }); var urlRegex = /\bhttps?:\/\/[a-zA-Z0-9()^=+*@&%#|~?!;:,.-_\/]*[-A-Za-z0-9+&@#\/%=~_()|](?!(\<\/a\>|"|'))/g; $tmp.contents().each(function () { if (this.nodeType == Node.TEXT_NODE) { var string = this.nodeValue; string = string.replace(urlRegex, function (url) { if (url.match(/\.gifv/) != null) { //gifv return gifvToVideo(url); } else if (url.match(/\.(jpeg|jpg|gif|png|svg)/) != null) { //image return "<img src='" + url + "' alt='" + url + "'>"; } else if (url.match(/\.(mp4|webm)/) != null) { //video return '<video><source src="' + url + '"></video>'; } else { //link return '<a href="' + url + '" target="_blank">' + url + '</a>'; } }); $(this).replaceWith(string) } }) return $tmp.html(); } 然后又怎么做呢?

2 个答案:

答案 0 :(得分:8)

这是Fiddle,而不是Action。如果您不想返回值,则必须使用Action<int> example1 = (int x) => Console.WriteLine("Write {0}", x); example1.Invoke(1); // or example1(1); Action example3 = () => Console.WriteLine("Done"); example3.Invoke(); // or example3();

例如:

{{1}}

答案 1 :(得分:2)

您需要Action

但是,据推测,除了设置和操作局部变量之外,它还会做更多的工作吗?