2010-04-16 27 views
14
  1. क्या कोई बता सकता है कि LINQ, Lambda, बेनामी तरीके, प्रतिनिधि क्या हैं?LINQ बनाम लैम्ब्डा बनाम अज्ञात तरीके बनाम बनाम

  2. ये 3 एक दूसरे के लिए अलग कैसे हैं?

  3. क्या कोई अन्य के लिए बदला जा सकता था?

मैं कोई ठोस जवाब जब मैं

+4

उस सूची में 4 चीजें हैं ... –

+3

<शत्रुतापूर्ण प्रतिक्रिया> – TheHurt

+0

@ श्री कुमार: मैंने वोट कम नहीं किया लेकिन मुझे लगता है कि यह इस तथ्य के बीच एक मिश्रण है कि यह आसानी से उपलब्ध जानकारी है और यह कि आपकी अंग्रेजी सही नहीं है –

उत्तर

29

LINQ Googling था नहीं मिला एक व्यापक प्रौद्योगिकी नाम है जिसमें .NET 3.5 और सी # 3.0 परिवर्तनों का एक बड़ा हिस्सा शामिल है; "भाषा में क्वेरी" और बहुत कुछ।

एक प्रतिनिधि एक फ़ंक्शन-पॉइंटर से तुलनीय है; एक वस्तु, यदि आप चाहें के रूप में एक "विधि संभाल", यानी

Func<int,int,int> add = (a,b) => a+b; 

एक प्रतिनिधि है कि मैं तो कॉल कर सकते हैं लेखन की एक तरीका है। प्रतिनिधि भी घटना और अन्य कॉलबैक दृष्टिकोण को कम कर देते हैं।

someObj.SomeEvent += delegate { 
    DoSomething(); 
}; 

वे भी "पर कब्जा कर लिया चर" (ऊपर दिखाया गया है) के माध्यम से भाषा में पूर्ण बंद की शुरुआत की:

बेनामी तरीकों प्रतिनिधि उदाहरणों बनाने, उदाहरण के लिए के लिए 2.0 शॉर्ट हाथ कर रहे हैं। # 3.0 सी lambdas, जो गुमनाम तरीके के रूप में एक ही उत्पादन कर सकते हैं का परिचय:

someObj.SomeEvent += (s,a) => DoSomething(); 

लेकिन जो भी (उदाहरण के लिए) डेटाबेस के आधार पर पूर्ण LINQ के लिए अभिव्यक्ति के पेड़ में संकलित किया जा कर सकते हैं। उदाहरण के लिए, आप एसक्यूएल सर्वर के खिलाफ एक प्रतिनिधि नहीं चला सकते हैं! लेकिन:

IQueryable<MyData> source = ... 
var filtered = source.Where(row => row.Name == "fred"); 

, एसक्यूएल में अनुवाद किया जा सकता है क्योंकि यह एक अभिव्यक्ति पेड़ (System.Linq.Expression) में संकलित किया गया है।

तो:

  • एक गुमनाम विधि एक प्रतिनिधि
  • एक लैम्ब्डा एक anon-विधि के रूप में ही हो सकता है बनाने के लिए इस्तेमाल किया जा सकता है, लेकिन जरूरी नहीं कि
1

हालांकि इस लिंक का शीर्षक Anonymous methods है जिसमें यह प्रतिनिधि, अज्ञात विधियों और लैम्ब्डा अभिव्यक्तियों को शामिल करता है।

संबंधित मुद्दे