📜  C# func - C# (1)

📅  最后修改于: 2023-12-03 14:39:43.084000             🧑  作者: Mango

C# Func - C#

C# Func 是 C# 中的一个委托类型,它可以用来定义一段可执行的代码块,并在需要的时候执行。C# Func 可以用来传递方法作为参数,或者将方法作为返回值返回。在 C# 中,使用委托类型可以实现许多高级的编程技巧,比如事件、回调函数等。

定义一个 C# Func

C# Func 的定义包含两个部分:输入和输出。如下是一个简单的 C# Func 定义,它接受一个字符串作为输入,然后返回字符串的长度:

Func<string, int> stringLengthFunc = (s) => s.Length;

在上面的代码中,Func<string, int> 定义了一个输入为 string,输出为 int 的 Func 对象。=> 后面的 s.Length 表示了输入字符串的长度,也就是输出结果。

需要注意的是,C# Func 的最后一个类型参数代表输出类型,而其他的类型参数代表输入参数类型。C# Func 可以同时支持最多 16 个参数,如果需要更多的参数,可以使用 Tuple 类型来传递多个值。

使用 C# Func

使用 C# Func 的方法非常简单,只需要将 Func 对象作为参数传递给另一个方法即可。比如,如果我们有一个方法接受一个字符串和一个 C# Func 对象作为参数:

void PrintLength(string str, Func<string, int> lengthFunc)
{
    int length = lengthFunc(str);
    Console.WriteLine($"The length of {str} is {length}");
}

我们可以这样使用这个方法:

string testStr = "Hello, world!";
PrintLength(testStr, stringLengthFunc);

这样就会输出字符串的长度。

使用 Lambda 表达式定义 C# Func

上面的例子中使用了一个 Lambda 表达式来定义 C# Func。事实上,C# Func 也可以通过普通方法来定义,然后使用 delegate 关键字来将方法转换为 C# Func 对象。但是,使用 Lambda 表达式来定义 C# Func 更加方便和简单。

下面是另一个例子,使用 Lambda 表达式来创建一个 C# Func 对象,在每次调用时将输入字符串转换为小写字母:

Func<string, string> toLowerFunc = (s) => s.ToLower();

这个 C# Func 可以这样使用:

string testStr = "Hello, world!";
string lowerStr = toLowerFunc(testStr);
Console.WriteLine($"The lower case of {testStr} is {lowerStr}");
总结

C# Func 是一个非常有用的委托类型,它可以用来传递方法作为参数或返回值。使用 C# Func 可以让代码更加灵活,同时也可以实现一些高级的编程技巧,比如事件、回调函数等。记住,C# Func 的定义包括输入和输出,可以通过 Lambda 表达式来定义。