ठीक है, पिछले उत्तर में बदलें। क्योंकि Int64
से Double
(लेकिन विपरीत नहीं) से एक अंतर्निहित रूपांतरण है, जो अभिव्यक्ति का परिणाम प्रकार होगा। तो जब आप Int64
बॉक्सिंग प्राप्त करने की अपेक्षा करते हैं, तो आपको वास्तव में Double
बॉक्सिंग मिलता है (लेकिन उस मान के साथ जो मूल रूप से Int64.Parse
से आया था)।
बस अगर यह पर्याप्त स्पष्ट नहीं है, तो हम सभी return
कथनों को बदल दें जैसे कि वे केवल एक चर वापस कर दें।
private static object ParseNumber(string token, FieldDefinition def)
{
if (def.Fraction > 0)
return Double.Parse(token);
else
return Int64.Parse(token);
}
Convert कि उचित रूप से:
private static object ParseNumber(string token, FieldDefinition def)
{
if (def.Fraction > 0)
{
double d = Double.Parse(token);
object boxed = d; // Result is a boxed Double
return boxed;
}
else
{
long l = Int64.Parse(token);
object boxed = l; // Result is a boxed Int64
return boxed;
}
}
और अब के सशर्त ऑपरेटर के साथ संस्करण के लिए भी ऐसा ही करते हैं:
private static object ParseNumber(string token, FieldDefinition def)
{
return def.Fraction > 0 ? Double.Parse(token) : Int64.Parse(token);
}
हो जाता है
private static object ParseNumber(string token, FieldDefinition def)
{
// The Int64.Parse branch will implicitly convert to Double
double d = def.Fraction > 0 ? Double.Parse(token) : Int64.Parse(token);
object boxed = d; // *Always* a Double
return boxed;
}
यहाँ मूल कोड है
संपादित करें: अपेक्षित के रूप में sted, थोड़ा और जानकारी। प्रपत्र
X ? Y : Z
की एक सशर्त अभिव्यक्ति के प्रकार Y
और Z
के प्रकार है, जो मैं TY
और TZ
फोन करता हूँ पर निर्भर करता है। वहाँ कुछ ही विकल्प हैं:
TY
और TZ
एक ही प्रकार हैं: नतीजा यह है कि प्रकार है
- वहाँ
TY
से TZ
को नहीं बल्कि TZ
से TY
को एक अंतर्निहित रूपांतरण है: परिणाम प्रकार TZ
और की है रूपांतरण का उपयोग तब किया जाता है जब पहली शाखा का उपयोग किया जाता है।
TZ
से TY
के लिए, लेकिन नहीं TY
से TZ
को एक अंतर्निहित रूपांतरण नहीं है: परिणाम प्रकार TY
की है और रूपांतरण करता है, तो दूसरी शाखा प्रयोग किया जाता है प्रयोग किया जाता है।
- दोनों दिशाओं में एक अंतर्निहित रूपांतरण नहीं है: संकलन-टाइम त्रुटि
- बिना किसी रूपांतरण किसी भी तरह के होते हैं: संकलन-टाइम त्रुटि
कि मदद करता है?
स्रोत
2009-03-09 17:26:12
http://cznp.com/s/7JM –