首頁 > 後端開發 > C#.Net教程 > C# 匿名函數

C# 匿名函數

PHPz
發布: 2024-09-03 15:14:47
原創
518 人瀏覽過

C#中沒有名稱的函數稱為匿名函數,也可以表示為沒有名稱的函數。 C# 中的匿名函數有兩種類型,即C# 中的Lambda 表達式和C# 中的匿名方法,其中用於建立委託的匿名函數在C# 中稱為Lambda 表達式,使用該表達式可以建立本地函數並作為參數和查詢傳遞LINQ 也可以藉助Lambda 表達式來編寫。匿名方法也提供相同的功能,只是它允許不使用參數清單。

C# 中的匿名函數型別

C# 中有兩種類型的匿名函數。他們是:

1. Lambda 表達式

  • 可以使用一種稱為 Lambda 表達式的匿名函數來建立委託。
  • 可以使用 Lambda 表達式建立本機函數,並可以將其作為參數傳遞。
  • 可以藉助 Lambda 表達式來寫 LINQ 的查詢。
  • C#中lambda表達式的語法如下:
(input-parameters) => expression
登入後複製
範例#1

在程式中示範 Lambda 表達式求數字平方的 C# 程式:

代碼:

using System;
//a namespace called program is defined
namespace program
{
//a class called check is defined
class check
{
delegate int Findsquare(int number);
//main method is called
static void Main(string[] args)
{
//a lambda expression to find the square of a number is defined
Findsquare Obtainsquare = r => r * r;
int l = Obtainsquare(3);
Console.WriteLine("The Square of the given number is: "+l);
}
}
}
登入後複製

輸出:

C# 匿名函數

在上面的程式中,定義了一個名為program的命名空間。然後定義一個名為check的類別。然後呼叫main方法。然後定義 lambda 表達式來求數字的平方。顯示使用 lambda 表達式找到的數字的平方。

範例#2

在程式中示範 Lambda 表達式的 C# 程序,以確定清單中是否存在數字:

代碼:

using System;
using System.Collections.Generic;
//a namespace called program is defined
namespace program
{
//a class called check is defined
class check
{
//main method is called
static void Main(string[] args)
{
//a new list of type integer is created
List<int> mylist = new List<int>();
//integers are added to the list using add() method
mylist.Add(10);
mylist.Add(20);
mylist.Add(30);
//a lambda expression and find method is used to determine if a number is present in the list
int found = mylist.Find(r => r == 20);
if(found==0)
{
Console.WriteLine("The number is present in the list");
}
else
{
Console.WriteLine("The number is not present in the list");
}
//a lambda expression and find method is used to determine if a number is present in the list
found = mylist.Find(r => r == 40);
if(found==0)
{
Console.WriteLine("The number is present in the list");
}
else
{
Console.WriteLine("The number is not present in the list");
}
}
}
}
登入後複製

輸出:

C# 匿名函數

在上面的程式中,定義了一個名為program的命名空間。然後定義一個名為check的類別。然後呼叫main方法。然後建立一個新的整數類型清單。然後使用 Add() 方法將整數加入到列表中。然後使用 lambda 表達式和 Find() 方法來確定列表中是否存在數字。

2.匿名方法

  • 沒有名稱的方法在 C# 中稱為匿名方法。
  • 匿名方法是在 C# 2.0 版本中引入的。
  • 當要建立內聯方法時,我們會使用匿名方法,參數也必須傳遞給該方法,類似於我們將參數傳遞給任何其他方法的方式。
  • 關鍵字 delegate 用來定義匿名方法,該方法可以賦值給 delegate 類型的變數。
  • C#中匿名方法的語法如下:
Delegate(parameter_list)
{
//Block of code
};
登入後複製
範例#1

在程式中示範匿名方法的 C# 程式:

代碼:

using System;
//a class called program is defined
class program
{
//a delegate is created by using delegate keyword
public delegate void subject(string favsubject);
// Main method is called
static public void Main()
{
// a parameter is passed to the anonymous method using delegate keyword
subject sub = delegate(string favsubject)
{
Console.WriteLine("{0} is my favourite subject", favsubject);
};
sub("C#");
}
}
登入後複製

輸出:

C# 匿名函數

在上面的程式中,定義了一個類別程式。然後使用 delegate 關鍵字建立委託。然後呼叫main方法。然後使用 delegate 關鍵字將參數傳遞給匿名方法。

範例#2

C# 程式示範程式中的匿名方法可以存取外部方法中定義的變數:

代碼:

using System;
//a class called program is defined
class program
{
//anonymous method is declared using delegate keyword
public delegate void subject(string favsubject);
// Main method is called
static public void Main()
{
//a string variable is defined in the outside method from anonymous method
string favsubject1 = "Coding_in_C#";
// a parameter is passed to the anonymous method using delegate keyword
subject sub = delegate(string favsubject)
{
Console.WriteLine("{0} is my favourite subject", favsubject);
Console.WriteLine("I also like {0}", favsubject1);
};
sub("C#");
}
}
登入後複製

輸出:

C# 匿名函數

在上面的程式中,定義了一個名為program的類別。然後使用 delegate 關鍵字建立委託。然後呼叫main方法。然後定義一個字串變量,它是匿名方法的外部方法。然後使用 delegate 關鍵字將參數傳遞給匿名方法。匿名方法也可以存取匿名方法以外的變數。

以上是C# 匿名函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板