मैं Get<int>(Stat);
या Get<string>(Name);
परोक्ष 'टी'
लेकिन जब संकलन मैं कॉल कर सकते हैं करने के लिए कनवर्ट नहीं कर सकता प्रकार 'इंट':
के प्रकार 'int' कनवर्ट नहीं कर सकतापरोक्ष 'टी'
और string
के लिए एक ही चीज़।
public T Get<T>(Stats type) where T : IConvertible
{
if (typeof(T) == typeof(int))
{
int t = Convert.ToInt16(PlayerStats[type]);
return t;
}
if (typeof(T) == typeof(string))
{
string t = PlayerStats[type].ToString();
return t;
}
}
आप शायद सोच रहे हैं कि अगर ब्लॉक चेक किया गया है कि टी int int है, तो ब्लॉक के भीतर, आप जानते हैं कि टी int है और आप int int को टी में परिवर्तित करने में सक्षम होना चाहिए। लेकिन संकलक को उस तर्क का पालन करने के लिए डिज़ाइन नहीं किया गया है, यह सिर्फ जानता है कि आम तौर पर टी int से प्राप्त नहीं होता है, इसलिए यह अंतर्निहित रूपांतरण की अनुमति नहीं देता है। (और यदि संकलक ने इसका समर्थन किया है, तो सत्यापनकर्ता नहीं होगा, इसलिए संकलित असेंबली अविश्वसनीय होगी।) – JGWeissman