"的作用吗?-6ren"> "的作用吗?-我正在阅读 Pro MVC 2 这本书,其中有一个为 HtmlHelper 类创建扩展方法的示例。 这里是代码示例: public static MvcHtmlString PageLinks(thi-6ren">
gpt4 book ai didi

c# - 有人可以解释 C# "Func"的作用吗?

转载 作者:IT王子 更新时间:2023-10-29 03:57:54 26 4
gpt4 key购买 nike

我正在阅读 Pro MVC 2 这本书,其中有一个为 HtmlHelper 类创建扩展方法的示例。

这里是代码示例:

public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int,string> pageUrl)
{
//Magic here.
}

这是一个用法示例:

[Test]
public void Can_Generate_Links_To_Other_Pages()
{
//Arrange: We're going to extend the Html helper class.
//It doesn't matter if the variable we use is null
HtmlHelper html = null;

PagingInfo pagingInfo = PagingInfo(){
CurrentPage = 2,
TotalItems = 28,
ItemsPerPage = 10
};

Func<int, String> pageUrl = i => "Page" + i;

//Act: Here's how it should format the links.
MvcHtmlString result = html.PageLinks(pagingInfo, pageUrl);

//Assert:
result.ToString().ShouldEqual(@"<a href=""Page1"">1</a><a href=""Page2"">2</a><a href=""Page3"">3</a>")

}

编辑:删除了混淆此问题的部分。

问题是:为什么该示例使用 Func?我应该什么时候使用它?什么是函数?

谢谢!

最佳答案

A Func<int, string>喜欢

Func<int, String> pageUrl = i => "Page" + i;

是接受 int 的代表作为其唯一参数并返回 string .在此示例中,它接受 int名称为 i 的参数并返回字符串 "Page" + i它只是连接 i 的标准字符串表示形式到字符串 "Page" .

一般来说,Func<TSource, TResult>接受一个类型为 TSource 的参数并返回 TResult 类型的参数.例如,

Func<string, string> toUpper = s => s.ToUpper();

然后你可以说

string upper = toUpper("hello, world!");

Func<DateTime, int> month = d => d.Month;

所以你可以说

int m = month(new DateTime(3, 15, 2011));

关于c# - 有人可以解释 C# "Func<T,T>"的作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5315500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com