polymorphism - Why can't C# compiler follow all code paths through a switch statement -


नीचे कोड ठीक काम करता है:

  ListControl lstMyControl; अगर (कुछ वैरिएबल == कुछएन्यूम। वेल्यू 1) {lstMyControl = new DropDownList (); } अन्य {lstMyControl = नया रेडियोबटन लिस्ट (); } LstMyControl.CssClass = "SomeClass";  

जबकि नीचे कोड संकलित नहीं होगा:

  ListControl lstMyControl; स्विच (कुछ वैरिएबल) {केस SomeEnum.Value1: lstMyControl = new DropDownList (); टूटना; मामला डिफ़ॉल्ट: lstMyControl = नया रेडियोबटन लिस्ट (); टूटना; } LstMyControl.CssClass = "SomeClass";  

दूसरे उदाहरण में कंपाइलर कहता है कि मैं एक ऐसी वैरिएबल पर एक संपत्ति सेट करने का प्रयास कर रहा हूं जो इंस्टाटिअएटेड नहीं हुई है। या तो मामले में lstMyControl को तत्काल किया जाना चाहिए, लेकिन कंपाइलर यह देखने के लिए स्विच स्टेटमेंट के माध्यम से उस कोड पथ का अनुसरण नहीं कर सकता। उपरोक्त सरल उदाहरण में मैं सिर्फ अगर / अन्य का उपयोग करता हूँ लेकिन कई बार जब मैं 10 अलग-अलग वर्गों के साथ ऐसा कुछ करना चाहता था, जो सभी एक ही आधार वर्ग से उत्तीर्ण होते हैं और एक 10 होने पर / ifif स्टेटमेंट कष्टप्रद होते हैं जब एक स्विच स्टेटमेंट मैं क्या करना चाहिए।

  लिस्ट कंट्रोलोल lstMyControl; स्विच (कुछ वैरिएबल) {केस SomeEnum.Value1: lstMyControl = new DropDownList (); टूटना; डिफ़ॉल्ट: // "केस" के साथ उपसर्ग न करें lstMyControl = नया RadioButtonList (); टूटना; } LstMyControl.CssClass = "SomeClass";  

Comments

Popular posts from this blog

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net - getting a value of selected radiobutton in LoadViewState -