c# - Can not cast my Matrix type to IEnumerable<IEnumerable> -


इस सवाल का पहले से ही एक उत्तर है: < / p>

  • 3 जवाब

    मेरे पास एक मैट्रिक्स क्लास है इस हस्ताक्षर है:

      सार्वजनिक आंशिक संरचना मैट्रिक्स: IEnumerable & lt; वेक्टर & gt ;, आईक्वेटेबल & lt; मैट्रिक्स & gt; {...}   

    फिर, इसी प्रकार, मेरे पास एक वेक्टर क्लास है:

      सार्वजनिक आंशिक स्ट्रक्चर वेक्टर: IEnumerable & lt; float & gt ;, iequatable & lt; वेक्टर & gt; {...}   

    तो, कोड में कहीं और मेरे पास:

      मैट्रिक्स मैट्रिक्स = नया मैट्रिक्स (); IEnumerable & LT; IEnumerable & LT; फ्लोट & gt; & gt; फ्लोटएन्यूमेंटेशनइनामेशन = मैट्रिक्स;   

    लेकिन यह संकलित करने में विफल रहता है, यह कहकर कि वह मैट्रिक्स को एक IEnumerable & lt; IEnumerable & lt; float & gt; & gt; में परिवर्तित नहीं कर सकता।

    लेकिन मैं नहीं देख सकता क्यों नहीं?

    मैट्रिक्स लागू करता है IEnumerable & lt; vector & gt; लेकिन IEnumerable & lt; IEnumerable & lt; float & gt; & gt; या तो इसे IEnumerable & lt; IEnumerable & lt; float & gt; & gt; के रूप में भी लागू करें या इसे सही प्रकार पर डालें:

      IEnumerable & lt; IEnumerable & lt; float & gt; & gt; फ्लोट एन्म्युमेंटेशन = मैट्रिक्स। कैस्ट & lt; IEnumerable & lt; float & gt; & gt; ();   

    ध्यान दें कि यदि B से प्राप्त होता है तो इसका अर्थ यह नहीं है कि T & lt; B & gt; भी T & lt; A & gt; से निकला है। वास्तव में T & lt; A & gt; और T & lt; B & gt; को दो अलग-अलग असंबंधित प्रकार माना जाता है।

    यह क्यों देखना आसान नहीं है, लेकिन हम एक और उदाहरण लेते हैं:

      वर्ग व्यक्ति {सार्वजनिक स्ट्रिंग नाम {get; सेट; }} वर्ग के छात्र: व्यक्ति {सार्वजनिक वर्ण ग्रेड {प्राप्त; सेट; }}   

    अब मान लें कि यह अनुमति थी:

      सूची & lt; छात्र & gt; छात्रों = नई सूची & lt; छात्र & gt; (); सूची के & lt; व्यक्ति & gt; व्यक्ति = छात्र; व्यक्ति। जोड़ें (नया व्यक्ति ()); // ओह!   

    अंतर्निहित सूची अभी भी एक छात्र सूची है और यह आपको व्यक्ति के ऑब्जेक्ट्स को जोड़ने की अनुमति नहीं देती!

    ठीक है आपका उदाहरण अलग है और यदि आप जानते हैं कि कैसे प्रकार लागू होते हैं तो यह काम करना चाहिए। लेकिन सी # केवल सार सिंटैक्स निर्माण देखता है और पता है कि वास्तव में किस प्रकार का उद्देश्य है कंपाइलर कहने में सक्षम नहीं है: "ठीक है IEnumerable & lt; T & gt; में जोड़ें विधि नहीं है, इसलिए यह समस्या घटित नहीं होगी" इसलिए सामान्य प्रकार स्वचालित रूप से सह-या पोषक तत्व नहीं हो सकते।

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

Installing croogo for cakephp -

c# - Use custom conventions when persisting Rebus sagas in MongoDb -