दिलचस्प पोस्ट
कोणीय जेएस का उपयोग करके एक ड्रॉपडाउन सूची नियंत्रण का एक चयनित विकल्प कैसे सेट करें जीएसएम एसएम 5100 बी सीएमईआरआर: 4 त्रुटि jQuery $ .animate () कई तत्व लेकिन केवल एक बार कॉलबैक फ़ायर करें डाटाबेस सर्वर से कनेक्ट नहीं किया जा सकता (mysql workbench) Python के द्वारा फ़ाइल में पाठ को कैसे खोज और प्रतिस्थापित करना है? स्ट्रिंग को जोड़ने के लिए सबसे पायथनिक तरीका दो गतिविधियों के बीच बिटमैप पासिंग Codeigniter छवि का आकार बदलना? ओपनआईडी प्रमाणीकरण कैसे काम करता है? वेब अनुप्रयोगों में एनिमेटेड कर्सर समर्थन? सीएसएस वर्टिकल-संरेखित करें: मध्य काम नहीं कर रहा है क्लाइंट द्वारा भेजा गया अनुरोध वाक्यविन्यास गलत था.-स्प्रिंग एमवीसी + जेडीबीसी टेम्पलेट लेक्सर्स बनाम पार्सर `$ Q` के साथ काजल निष्पादन आदेश Google Analytics के साथ जावास्क्रिप्ट पुनर्निर्देशन

प्रतिबिंब का उपयोग करके चर नाम कैसे प्राप्त करें?

उदाहरण के लिए,

static void Main() { var someVar = 3; Console.Write(GetVariableName(someVar)); } 

इस प्रोग्राम का आउटपुट होना चाहिए:

 someVar 

प्रतिबिंब का उपयोग कर मैं इसे कैसे प्राप्त कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "प्रतिबिंब का उपयोग करके चर नाम कैसे प्राप्त करें?"

यह प्रतिबिंब के साथ ऐसा करना संभव नहीं है, क्योंकि एक बार आईएल के लिए संकलित नाम का चर नहीं होगा। हालांकि, आप अभिव्यक्ति के पेड़ का उपयोग कर सकते हैं और एक बंद करने के लिए चर को बढ़ावा देते हैं:

 static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; } 

आप निम्नानुसार इस पद्धति का उपयोग कर सकते हैं:

 static void Main() { var someVar = 3; Console.Write(GetVariableName(() => someVar)); } 

ध्यान दें कि यह बहुत धीमा है, इसलिए इसे अपने एप्लिकेशन के प्रदर्शन के महत्वपूर्ण रास्ते में उपयोग न करें। हर बार जब यह कोड चलता है, तो कई ऑब्जेक्ट्स बनते हैं (जिसकी वजह से जीसी दबाव होता है) और कवर के तहत कई गैर-लचीले तरीकों को बुलाया जाता है और कुछ भारी प्रतिबिंब का उपयोग किया जाता है।

अधिक पूर्ण उदाहरण के लिए, यहां देखें।

अद्यतन करें

सी # 6.0 के साथ, nameof कीवर्ड को भाषा में जोड़ा जाता है, जो हमें निम्नलिखित करने की अनुमति देता है:

 static void Main() { var someVar = 3; Console.Write(nameof(someVar)); } 

यह स्पष्ट रूप से अधिक सुविधाजनक है और उसी लागत को स्ट्रिंग को निरंतर स्ट्रिंग के रूप में परिभाषित किया गया है।

आप प्रतिबिंब का उपयोग नहीं कर सकते GetVariableName संख्या 3 पारित कर दिया है, एक चर नहीं है आप आईएल के कोड का निरीक्षण कर सकते हैं, लेकिन यह संभवतः बहुत कठिन टोकरी में है।