यह त्रुटि "सामान्य" है। ऐसा लगता है, डिबगर मूल्य है कि आप T = int
के रूप में दर्ज है, लेकिन बस के रूप में int
(यह डिबगर है कि यह एक int
उम्मीद पर लिखा है) नहीं मिलता है, और फिर कोशिश करता है अपने int
T
कन्वर्ट करने के लिए। भले ही T
int
टाइप करें, यह रूपांतरण को पूरी तरह से नहीं कर सकता है (आमतौर पर आपको इस तरह की त्रुटियों को हल करने के लिए अपना मूल्य डालना होगा), यह आपके कोड को संकलित करने के लिए उपयोग की जाने वाली वही कॉन्फ़िगरेशन के साथ फ्लाई पर अपना मान पुन: संकलित कर सकता है । और इस कॉन्फ़िगरेशन में value
टाइप T = unknown
है, T = int
नहीं।
मुझे लगता है कि फ्लाई पर मूल्य बदलना वास्तव में रनटाइम की तरह काम नहीं करता है। क्योंकि रनटाइम पर, T = int
इस पद्धति में (किसी व्यक्ति ने कहा कि बेहतर मुझ से संकलक/डिबगर के व्यवहार से अवगत है, हो सकता है, आपको जानकारी यहाँ क्या हो रहा है में समझा सकता है।)
लेकिन जैसे :
public void Try(int value)
{
// With _value as T
_value = value;
}
आप एक ही त्रुटि संदेश (और इसे संकलित करने में सक्षम नहीं) के साथ समाप्त हो जाएगा।
त्रुटि CS0029 परोक्ष 'टी'
के प्रकार 'int' कनवर्ट नहीं कर सकता लेकिन आप मूल्य के रूप में अपने डीबगर में इस टाइप करता है, तो (अपने विधि के लिए):
(T)(object)10 // Or whatever your int value is
या (जो आपको वास्तव में टालना चाहिए) से ऊपर परीक्षण विधि के लिए:
_value = (T)(object)value;
यह काम करता है, मान बदल जाता है। (जब तक आपका मान T
प्रकार नहीं है)
आपने स्पष्ट रूप से int
को T
में रूपांतरित कर दिया है।
कुछ भी गलत नहीं, यह सामान्य रूपांतरण त्रुटि के लिए एक मानक गैर-जेनेरिक है।
स्रोत
2016-10-17 12:35:33
मेरे लिए ठीक काम करता है (वीएस 2013)। आप कौन सा संस्करण उपयोग कर रहे हैं? – Rob
वीएस समुदाय 2015 (14.0.25425.01 अद्यतन 3) – Cevizli
मैं वीएस 2015 पेशेवर में इस त्रुटि को पुन: उत्पन्न करने में सक्षम था। –