Esminis skirtumas tarp klasės ir struktūros yra tas, kad klasė yra nuorodos tipas, o struktūra yra reikšmių tipas, o jų paskirstymas atmintyje skiriasi.
Kas yra klasė?
Klasė, pagrindinė objektinio programavimo sąvoka, yra pasirinktinės duomenų struktūros tipas, kurį paprastai sudaro laukai, atributai, metodai, atributai, konstruktoriai, indeksatoriai, operatoriai ir kt. .NET visos klasės galiausiai paveldi iš System.Object klasės, todėl jos yra nuorodos tipas, tai yra, kai naujas klasės egzempliorius, to egzemplioriaus adresas valdomoje krūvoje saugomas rietuvėje, o egzemplioriaus reikšmė saugoma valdomoje krūvoje.
Kas yra struktūra?
Struktūra yra reikšmės tipas, naudojamas susijusių kintamųjų rinkiniui suskirstyti į vieną kintamojo objektą. Visos struktūros yra paveldėtos iš System.ValueType klasės, todėl jos yra reikšmės tipas, t. y. struct egzempliorius sukuriamas krūvoje, kurioje priskirta gija, ir jis saugo pačią reikšmę. Taigi, kai naudojame struct, galime jį traktuoti kaip pagrindinę tipo klasę, pvz., int ir char.
1. klasė yra nuorodos tipas, o structs yra reikšmės tipas
Kadangi klasė yra nuorodos tipas, klasė gali būti nustatyta kaip nulinė. Tačiau negalime padaryti struct nuliniu, nes tai yra reikšmės tipas.
2. Kai sukursite klasę, ji bus sukurta krūvoje. Ir jūs sukuriate struktūrą, kuri bus sukurta ant rietuvės
3. Jūs naudojate nuorodą į klasės egzempliorių. Ir jūs nenaudojate nuorodos į struktūrą. (vietoj to naudokite juos tiesiogiai)
4. Kai mes perduodame klasę kaip argumentą metodui, mes perduodame nuorodą. struct perduoda reikšmę, o ne nuorodą.
5. Struktūros negali turėti iniciatorių, klasės gali turėti iniciatorius.
6. Klasės gali turėti akivaizdžius konstruktorius be parametrų, bet Structs negali
7. Naujas raktažodis turi būti sukurtas prieš naudojant klasę, o Struct jo nereikia
8. Klasė palaiko paveldėjimą ir polimorfizmą, Struct ne. Pastaba: Tačiau "Struct" gali įdiegti sąsajas kaip ir klases
9. Kadangi Struct nepalaiko paveldėjimo, jos nariai negali būti keičiami saugomais ar saugomais vidiniais
10. Klasės konstruktoriui nereikia inicijuoti visų laukų, o Struct konstruktorius turi inicijuoti visus laukus
11. Klasė gali apibrėžti destruktorių, bet Struct negali
12. Klasė tinka dideliems ir sudėtingiems duomenims, o Struct tinka naujiems tipams, kurie dažnai naudojami kaip kai kurių duomenų derinys.
Taikomos progos: "Struct" turi našumo pranašumų, o "Class" - į objektą orientuoto išplėtimo pranašumų.
Pagrindinėje duomenų saugykloje naudojamas tipas sukurtas kaip Struct tipas, o tipas, naudojamas programos veikimui apibrėžti, yra skirtas kaip Class. Jei nesate tikri dėl būsimo tipo pritaikymo, turėtumėte naudoti "Class". |