我剛剛在這個論壇的一些問題中談到了這個語法,但Google和其他任何搜索引擎都會阻止搜索中的字母和數字以外的任何內容,因此無法搜索出「=>」。C#中的'=>'語法是什麼意思?
那麼誰能告訴我它是什麼以及它是如何使用的?
我剛剛在這個論壇的一些問題中談到了這個語法,但Google和其他任何搜索引擎都會阻止搜索中的字母和數字以外的任何內容,因此無法搜索出「=>」。C#中的'=>'語法是什麼意思?
那麼誰能告訴我它是什麼以及它是如何使用的?
這是lambda運算符。
從C#3到C#5,這僅用於lambda expressions。這些基本上是C#2中引入的anonymous methods的較短形式,但也可以轉換爲expression trees。
舉個例子:
Func<Person, string> nameProjection = p => p.Name;
等同於:
Func<Person, string> nameProjection = delegate (Person p) { return p.Name; };
在這兩種情況下,你要創建一個委託具有Person
參數,返回那個人的名字(作爲一個字符串)。
在C#6中,相同的語法用於表達式成員,例如,
// Expression-bodied property
public int IsValid => name != null && id != -1;
// Expression-bodied method
public int GetHashCode() => id.GetHashCode();
參見:
(事實上很多類似的問題 - 嘗試lambda和lambda-expressions標籤。)
由於這個問題沒有提到有關被問到的確切情況的任何信息,可能考慮更新這個答案也包含新的表達式bodied成員語法? – 2016-09-23 08:02:25
而不是使用匿名方法是這樣的:
somevar.Find(delegate(int n)
{
if(n < 10)
return n;
});
你只是把它寫這樣的:
somevar.Find(n => n < 10);
這將需要基於返回值的數據類型。
這基本上意味着「進入」,就像一個參數
MyObjectReference => MyObjectReference.DoSomething()
通常你用它們來傳遞功能集成到方法作爲參數,或在LINQ語句
MyCollection.Where(myobj => myobj.Age>10)
例如。
這意味着很棒。對於例如
x => x + 1
表示以x爲參數並返回它的後繼者的方法。
button.Click += new EventHandler((sender, e) => methodInfo.Invoke(null, new object[] { sender, e }));
通過調用MethodInfo保存的方法爲事件處理程序分配一個按鈕。
這裏是從MSDN
一個簡單的例子delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
任何之前=>的輸入參數,以及任何後表達。您可以有多個輸入參數。 Lambdas主要與Linq一起使用。
它是lambda表達式語法的一部分。 lambda表達式本質上是委託或匿名方法的縮寫形式。爲了說明,假設我有一串匹配字母表的字母的字符串。我可以用下列LINQ表達式挑出包含大於「E」值的數組成員:
var someLetters = alphabet.Where(l => l>「E」);
「=>」左邊的lambda表達式的部分標識了測試的變量名稱(設置爲字母表中的各個成員)和lambda表達式右邊的「 =>「標識處理。在這種情況下,處理產生一個布爾值,Where邏輯用來確定每個字母表的成員是否傳遞給someLetters數組。
它是函數表示法的另一種形式。以下幾乎相同:
// explicit function
int MyFunc(int pParam)
{
return pParam;
}
// delegate function
Func<int, int> MyFunc = delegate(int pParam) { return pParam; };
// lambda expression
Func<int, int> MyFunc = x => x;
想想一個lambda表達式的意思,「給出一些東西,返回一些東西」。在上例中,函數x => x
表示「給定x,返回x」。 (雖然lambda表達式不一定需要返回某些東西,但在這種情況下,您可能會將它們讀爲「給定x,使用x做某事」。)
[C#Lambda表達式,我爲什麼要使用它?] http://stackoverflow.com/questions/167343/c-sharp-lambda-expression-why-should-i-use-this) – nawfal 2014-07-03 10:07:37