दिलचस्प पोस्ट
nginx त्रुटि php5-fpm.sock से जुड़ जाती है (13: अनुमति अस्वीकृत) jQuery – ट्रिगर ईवेंट जब एक तत्व को DOM से निकाल दिया जाता है isValidFragment एंड्रॉइड एपीआई 1 9 गतिशील रूप से जावा वर्ग फ़ाइलों को लोड करने के लिए विधि एंड्रॉइड asynctask को यूबीआई को कॉलबैक भेजना पांडा डेटाफ्रेम में कस्टम सॉर्टिंग jQuery बनाम जावास्क्रिप्ट? डेटाबेस 'मास्टर' (ईएफ कोड-पहले) में डेटाबैस अनुमति अस्वीकृत बनाएँ लिनक्स कर्नेल में फ्लोटिंग पॉइंट का इस्तेमाल क्या इंटरफेस बिल्डर से UIView सीमा गुण सेट करना संभव है? इंटप्टर को ऑफ़सेट जोड़ें बिटमैपफैक्टरी ओम ने मुझे पागल कर दिया मैं जावास्क्रिप्ट ऑब्जेक्ट के गुणों को कैसे गिनता हूं? जावास्क्रिप्ट में स्ट्रिंग से सभी गैर-संख्यात्मक वर्ण स्ट्रिप करें क्यों java.util.Observable एक सार वर्ग नहीं है?

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

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

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

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

 someVar 

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

Solutions Collecting From Web of "प्रतिबिंब का उपयोग करके चर नाम कैसे प्राप्त करें?"

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

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