Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

นิพจน์แลมบ์ดาใน C # คืออะไร


นิพจน์แลมบ์ดาเป็นวิธีที่ดีกว่าในการแสดงวิธีการที่ไม่ระบุตัวตน ทั้งเมธอดที่ไม่ระบุชื่อและนิพจน์แลมบ์ดาช่วยให้คุณกำหนดการใช้งานเมธอดแบบอินไลน์ได้ อย่างไรก็ตาม เมธอดนิรนามกำหนดให้คุณต้องกำหนดประเภทพารามิเตอร์และประเภทส่งคืนสำหรับเมธอดอย่างชัดแจ้ง

แลมบ์ดานิพจน์ที่มีนิพจน์เป็น body:(input−parameters) => expression

คำสั่งแลมบ์ดาที่มีบล็อกคำสั่งเป็นเนื้อหา:(input−parameters) => { }

นิพจน์แลมบ์ดาใดๆ สามารถแปลงเป็นประเภทผู้รับมอบสิทธิ์ได้ ประเภทผู้รับมอบสิทธิ์ซึ่งนิพจน์แลมบ์ดาสามารถแปลงได้ถูกกำหนดโดยประเภทของพารามิเตอร์และค่าตอบแทน หากนิพจน์แลมบ์ดาไม่คืนค่า ก็สามารถแปลงเป็นประเภทผู้รับมอบสิทธิ์การดำเนินการได้ มิฉะนั้น สามารถแปลงเป็นประเภทผู้รับมอบสิทธิ์ Func ได้

static void Main(string[] args){
   Func<int, int> square = x => x * x;
   Console.WriteLine(square(5));
   Console.ReadLine();
}

นิพจน์แลมบ์ดาที่มีนิพจน์ทางด้านขวาของตัวดำเนินการ => เรียกว่านิพจน์แลมบ์ดา นิพจน์ lambda ส่งกลับผลลัพธ์ของนิพจน์และใช้รูปแบบพื้นฐานต่อไปนี้

Action line =() => Console.WriteLine();

Func cube =x => x * x * x;

Func testForEquality =(x, y) => x ==y;

Func isTooLong =(int x, string s) => s.Length> x;

C # 7.0 ภาษา C # ให้การสนับสนุนสิ่งอันดับในตัว คุณสามารถระบุทูเพิลเป็นอาร์กิวเมนต์ให้กับนิพจน์แลมบ์ดา และนิพจน์แลมบ์ดาของคุณสามารถส่งคืนทูเพิลได้เช่นกัน

ตัวแปรที่นำมาใช้ภายในนิพจน์แลมบ์ดาจะไม่ปรากฏให้เห็นในวิธีการปิดล้อม

นิพจน์แลมบ์ดาไม่สามารถจับพารามิเตอร์เข้า อ้างอิง หรือออกจากวิธีการล้อมรอบได้โดยตรง

คำสั่ง return ในนิพจน์แลมบ์ดาไม่ทำให้วิธีการปิดล้อมส่งคืน

นิพจน์แลมบ์ดาต้องไม่มีคำสั่ง goto, break หรือ continue ถ้าเป้าหมายของคำสั่ง jump นั้นอยู่นอกบล็อคนิพจน์ lambda นอกจากนี้ยังเป็นข้อผิดพลาดที่จะมีคำสั่งกระโดดนอกบล็อกนิพจน์แลมบ์ดาหากเป้าหมายอยู่ภายในบล็อก