在 C# 中创建内联函数
在本教程中,我们将讨论在 C# 中创建内联函数的方法。
在 C# 中使用 Lambda 表达式创建内联函数
在 C 和 C++ 之类的编程语言中,内联函数用 inline
关键字声明。内联函数中的代码由编译器替换为函数调用。因此,使代码内联。遗憾的是,没有内置关键字可以在 C# 中声明内联函数。我们可以在 C# 中使用 lambda 表达式创建一个内联函数。Lambda 表达式用于在 C# 中创建匿名函数。=>
关键字用于编写 lambda 表达式。
以下代码示例向我们展示了如何在 C# 中使用 lambda 表达式创建内联函数。
using System;
namespace inline_function {
class Program {
static void Main(string[] args) {
Func<int, int, int> add = (x, y) => x + y;
Console.WriteLine(add(1, 2));
}
}
}
输出:
3
我们创建了一个内联函数,该函数以 C# 中的 lambda 表达式返回 1
和 2
的总和。我们创建了 add
函数,该函数使用 =>
关键字返回两个整数变量的和。Func<int, int, int>
指定参数的数据类型,而 Func<int, int, int>
中的最后一个 int
指定匿名函数的返回类型。我们还可以使用 Action<T1, T2>
关键字指定匿名函数如果我们不想返回任何东西。下面的代码示例向我们展示了如何使用 Action<T1, T2>
关键字创建内联函数,该内联函数不会在 C# 中返回任何值。
using System;
namespace inline_function {
class Program {
static void Main(string[] args) {
Action<int, int> sum = (x, y) => Console.WriteLine(x + y);
sum(5, 6);
}
}
}
输出:
11
我们创建了一个内联函数,该函数以 C# 中的 lambda 表达式返回 5
和 6
的总和。我们创建了 sum()
函数,该函数使用 =>
关键字返回两个整数变量的和。Action<int, int>
指定匿名函数的参数的数据类型。我们只能将 lambda 表达式用于一行代码。
在 C# 中使用 Lambda 语句创建内联函数
如果我们的代码中有多行代码,则必须使用 lambda 语句。Lambda 语句也用于声明可用作内联的匿名函数 C# 中的函数。在 lambda 语句中声明匿名函数与 lambda 表达式相似,唯一的区别是多行语句包含在 {};
中。以下代码示例向我们展示了如何使用 C# 中的 lambda 语句创建内联函数。
using System;
namespace inline_function {
class Program {
static void Main(string[] args) {
Action<int, int> sum = (x, y) => {
int s = x + y;
Console.WriteLine(s);
};
sum(6, 7);
}
}
}
输出:
13
我们创建了一个内联函数,用 C# 中的 lambda 语句显示 6
和 7
的总和。我们可以在 sum()
函数中编写多行代码。就像 lambda 表达式一样,有两种类型,一种是返回值的 Func<T,T-return>
,另一种是不返回值的 Action<T>
。
在 C# 中使用局部函数创建内联函数
局部函数是 C# 中另一个函数内包含的函数。本地功能只能由包含它的功能来访问。局部函数在 7.0 及更高版本的 C# 中可用。本地函数可用于提供 C# 中的内联函数的功能。以下代码示例向我们展示了如何使用 C# 中的局部函数创建内联函数。
using System;
namespace inline_function {
class Program {
static void Main(string[] args) {
void sum(int a, int b) {
Console.WriteLine(a + b);
}
sum(7, 11);
}
}
}
输出:
18
我们创建了一个内联函数,该内联函数使用 C# 中的局部函数返回 7
和 11
之和。声明局部函数与声明常规常规函数相同。它只是在没有访问说明的情况下且在另一个函数中声明的。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn