Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 22710|Atsakyti: 0

[Šaltinis] Skirtumas tarp struktūros ir klasės C#

[Kopijuoti nuorodą]
Paskelbta 2016-06-24 11:53:06 | | |
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".




Ankstesnis:"Alipay RSA" privataus rakto ir viešojo rakto generavimo vieno paspaudimo įrankis
Kitą:C# atšaukti MySQL pagalbos klasę, išsaugoti ją
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com