在 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