मैं कम से कम .net 4 का अनुवाद STO में लेकिन OpCode.Stelem
अनुदेश इस बारे में एक टिप्पणी रखा एक stelem.any
यह मामला है कि आप प्रकार आप सरणी में और के लिए भंडारण कर रहे थे सांकेतिक शब्दों में बदलना पड़ा होने के लिए उपयोग करें देखें प्राइमेटिव्स विभिन्न stelem.*
ऑपकोड थे। यदि आप संदर्भ प्रकार संग्रहीत कर रहे थे (कुछ जो प्रतिनिधि या वर्ग के रूप में घोषित किया गया था) तो आप stelem.Ref
का उपयोग करेंगे और आप मूल्य प्रकारों के लिए Stelem (myType)
का उपयोग करेंगे (कुछ जिसे संरचना या enum के रूप में घोषित किया जाता है)।
हालांकि, जेनेरिक के आगमन के साथ टाइप पैरामीटर आया और यह कुछ भी हो सकता था। T
एक संदर्भ प्रकार हो सकता है या यह एक मूल्य प्रकार हो सकता है। इसलिए stelem.any
इस असामान्य मामले को संभालने के लिए पैदा हुआ है। लेकिन आप कह सकते हैं, मैं केवल एक अनबॉक्स किए गए टी को एक टी सरणी में स्टोर कर सकता हूं, इसलिए यह पूरी तरह से व्यर्थ है, क्या हम केवल सरणी के प्रकार पर भरोसा नहीं कर सकते हैं?
वैसे सरणी का प्रकार भी सामान्य हो सकता है, जो चीजों को बल्कि कठिन बना देगा। लेकिन अधिक महत्वपूर्ण बात यह है कि इसके कन्वर्स ऑपरेशन भी अगले ऑपरेशन को सत्यापित करने में मदद करता है।
ldarg.0
ldc.i4.0
ldelem.any !!T
सत्यापनकर्ता कि इस ढेर में संक्रमण के बाद अगले निर्देश एक अनबॉक्स्ड टी जो सामान्य तरीकों पैरामीटर है पर संचालित किया जाना चाहिए कहता है।
स्रोत
2013-01-12 19:14:34
मुझे पूरा यकीन है कि यह है।मुझे जांचने दो; पी – leppie
@leppie उन ऑपोड्स ओपकोड संग्रह में नहीं हैं – Earlz
Unbox_Any वहाँ है; पी संपादित करें: कम से कम – leppie