c# - Practical implications of using Expression in methods with delegates -
लेकिन व्यावहारिक रूप में, इस तरह से विधि हस्ताक्षर को परिभाषित करने का क्या असर है: स्पष्ट रूप से जिस तरह से हम से कच्चे व्यावहारिक स्तर पर भी आमंत्रण समान है: अंतर के साथ कि संकलित स्तर पर जब मुझे मानक प्रतिनिधियों आसान यदि आपको अपने लिनक्स अभिव्यक्ति के एएसटी तक पहुँच की आवश्यकता नहीं है, तो संकलित (अज्ञात प्रतिनिधि) संस्करण का उपयोग करें। ऐसे मामलों जो मैं सोचता हूं कि आपको एएसटी तक पहुंच की आवश्यकता हो सकती है: संक्षेप में, अगर आपको अभिव्यक्ति & lt; T & gt; की आवश्यकता नहीं है, अभिव्यक्ति & lt; T & gt;। का प्रयोग न करें। Linq.Expression & lt; T & gt; प्रकारों का उपयोग कर हम बाद में मूल्यांकन के लिए प्रोग्राम को एएसटी परिभाषित कर सकते हैं और / या निष्पादन।
सार्वजनिक शून्य someMethod1 (फ़नक & lt; bool & gt; func) {.. ।} // 1. के बजाय
सार्वजनिक शून्य someMethod2 (अभिव्यक्ति & lt; फ़नक & lt; bool & gt; & gt; expr) {...} // 2.
Func & lt; bool & gt; से परिणाम प्राप्त करते हैं से भिन्न होता है:
var परिणाम = func ( ); // 1.
var func = expr.Compile () // 2. var परिणाम = func ();
someMethod1 ((=) = & gt; सत्य); // A. SomeMethod1 (() = & gt; AMethodReturnsABool ()); // बी। SomeMethod1 (एमेन्थ्रेट्सअबल); // सी।
SomeMethod2 विधि समूह वाक्यविन्यास स्वीकार नहीं करता है: <पूर्व>
// SomeMethod2 (AMethodReturnsABool); // - & gt;
क्रिया & lt; T, ... & gt; या
Func & lt; T, के साथ एक हस्ताक्षर को परिभाषित करने की आवश्यकता है। ।
Comments
Post a Comment