एक प्रतिनिधि के रूप में लैम्ब्डा को संग्रहीत करके, आप एक प्रतिनिधि का एक विशिष्ट उदाहरण संग्रहीत कर रहे हैं जो कुछ कार्य करता है। इसे संशोधित नहीं किया जा सकता है, आप बस इसे कॉल करें। एक बार आपके प्रतिनिधि होने के बाद, आपके पास यह जांचने में सीमित विकल्प हैं कि यह क्या करता है और क्या नहीं।
एक लैम्ब्डा को अभिव्यक्ति के रूप में संग्रहीत करके, आप एक अभिव्यक्ति वृक्ष संग्रहित कर रहे हैं जो प्रतिनिधि का प्रतिनिधित्व करता है। इसे अन्य चीजों को करने के लिए छेड़छाड़ की जा सकती है जैसे कि इसके पैरामीटर बदलना, शरीर को बदलना और इसे कुछ मूल रूप से अलग करना। इसे किसी प्रतिनिधि को भी संकलित किया जा सकता है ताकि यदि आप चाहें तो इसे कॉल कर सकते हैं। आप यह देखने के लिए आसानी से अभिव्यक्ति का निरीक्षण कर सकते हैं कि इसके पैरामीटर क्या हैं, यह क्या करता है और यह कैसे करता है। यह ऐसा कुछ है जो एक क्वेरी प्रदाता किसी अन्य भाषा में एक अभिव्यक्ति को समझने और अनुवाद करने के लिए उपयोग कर सकता है (जैसे एक संबंधित अभिव्यक्ति वृक्ष के लिए एक SQL क्वेरी लिखें)।
कोड को उत्सर्जित करने से अभिव्यक्तियों का उपयोग करके गतिशील रूप से एक प्रतिनिधि बनाना भी बहुत आसान है। आप अपने कोड को उच्च स्तर पर अभिव्यक्ति के रूप में सोच सकते हैं जो कम स्तर पर जाने के बजाय एक कंपाइलर दृश्य कोड के समान है और आईएल निर्देशों के रूप में अपना कोड देखें।
तो एक अभिव्यक्ति के साथ, आप एक साधारण अज्ञात प्रतिनिधि से अधिक करने में सक्षम हैं। यद्यपि यह वास्तव में मुफ़्त नहीं है, लेकिन यदि आप एक नियमित विधि या अज्ञात प्रतिनिधि की तुलना में संकलित अभिव्यक्ति चलाते हैं तो प्रदर्शन हिट करेगा। लेकिन यह कोई मुद्दा नहीं हो सकता है क्योंकि अभिव्यक्तियों का उपयोग करने के अन्य लाभ आपके लिए महत्वपूर्ण हो सकते हैं।
स्रोत
2011-10-14 10:02:46
यह मेरे लिए बिल्कुल स्पष्ट है, बहुत धन्यवाद :-) – Steffen