दिलचस्प पोस्ट
इकाई फ़्रेमवर्क कोड पहले। प्राथमिक कुंजी ढूंढें बैच फ़ाइल में स्ट्रिंग की लंबाई कैसे प्राप्त करें? NSURL में विशेष वर्ण का उपयोग कैसे करें? मैं Node.js के साथ मौजूदा स्क्रिप्ट को कैसे प्राप्त करूं? 'न' और 'इन' कीवर्ड का उपयोग करने के लिए वाक्य रचना का क्रम एक समय में सभी गतिविधियों को समाप्त करें स्प्रिंग @ ट्रांज़ैक्शन विधि कॉल एक ही कक्षा में विधि द्वारा कॉल करती है, काम नहीं करती? मैक ओएस एक्स में clock_gettime विकल्प 403 जावा के साथ निषिद्ध लेकिन वेब ब्राउज़र नहीं? स्थिर HTML के साथ सामान्य हेडर / पाद लेख CHAR_BIT क्या है? ORA-12505, टीएनएस: वर्तमान में कनेक्ट डिस्क्रिप्टर में दिए गए एसआईडी के बारे में पता नहीं है बेस क्लास कन्स्ट्रक्टर में वर्चुअल विधि कॉलिंग ओरेकल डाटाबेस लिंक – MySQL समतुल्य? सभी अन्य दृश्यों के ऊपर UIView जोड़ें, जिसमें स्थितिबारी शामिल है

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

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

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 पारित कर दिया है, एक चर नहीं है आप आईएल के कोड का निरीक्षण कर सकते हैं, लेकिन यह संभवतः बहुत कठिन टोकरी में है।