Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 22710|Vastaus: 0

[Lähde] Ero rakenteen ja luokan välillä C#:ssa

[Kopioi linkki]
Julkaistu 24.6.2016 11.53.06 | | |
Olennaisin ero luokan ja rakenteen välillä on, että luokka on referenssityyppi, kun taas struct on arvotyyppi, ja niiden allokaatio muistissa on erilainen.

Mikä on luokka?

Luokka, joka on olio-ohjelmoinnin peruskäsite, on eräänlainen räätälöity tietorakenne, joka tyypillisesti sisältää kenttiä, attribuutteja, metodeja, attribuutteja, konstruktoreita, indeksoijia, operaattoreita jne. .NET:ssä kaikki luokat periytyvät lopulta System.Object-luokasta, joten ne ovat viitetyyppiä, eli kun uudistat luokan instanssin, kyseisen instanssin osoite hallitussa keossa tallennetaan pinoon ja instanssin arvo tallennetaan hallittuun heapiin.

Mikä on rakenne?

Rakenne on arvotyyppi, jota käytetään järjestämään joukko toisiinsa liittyviä muuttujia yhdeksi muuttujakokonaisuudeksi. Kaikki rakenteet periytyvät System.ValueType-luokasta, joten ne ovat arvotyyppiä, eli rakenne-instanssi luodaan pinoon, johon säie on määritetty, ja se tallentaa arvon itse. Joten kun käytämme structia, voimme käsitellä sitä perustyyppiluokkana, kuten int ja char.



1. luokka on referenssityyppi ja structs on arvotyyppi

Koska luokka on viitetyyppi, luokka voidaan asettaa nollaksi. Mutta emme voi tehdä structista nollaa, koska se on arvotyyppi.




2. Kun luot luokan, se luodaan kasaan. Ja luot rakenteen, joka luodaan pinossa

3. Käytät viittausta luokkainstanssiin. Et käytä viittausta rakenteeseen. (käytä niitä suoraan)

4. Kun annamme luokan argumenttina metodille, välitämme viitteen. Struct välittää arvon, ei viitteen.

5. Rakenteilla ei voi olla alustimia, luokilla voi olla alustuslaitteet.





6. Luokat voivat sisältää ilmeisiä parametrittomia konstruktoreita, mutta rakenteilla ei ole





7. Uusi avainsana täytyy instansoitua ennen luokan käyttöä, eikä rakenne sitä tarvitse




8. Luokka tukee periytymistä ja polymorfismia, Struct ei. Huomautus: Mutta Struct voi toteuttaa rajapintoja aivan kuten luokat

9. Koska Struct ei tue periytymistä, sen jäseniä ei voi muokata suojatulla tai suojatulla sisäisellä Sisäisellä

10. Luokan konstruktorin ei tarvitse aloittaa kaikkia kenttiä, ja Structin konstruktorin on alustettava kaikki kentät







11. Luokka voi määritellä tuhoajan, mutta Struct ei

12. Luokka sopii suurille ja monimutkaisille aineistoille, ja Struct sopii uusille tyypeille, joita usein käytetään yhdistelmänä jotakin dataa.



Sovellettavat tilanteet: Structilla on suorituskykyetuja, ja Classilla on oliopohjaisia laajennusetuja.

Taustalla olevan tietovaraston tyyppi suunnitellaan Struct-tyypiksi, ja sovelluksen käyttäytymisen määrittelytyyppi on luokanmuotoinen. Jos et ole varma tyypin tulevasta käytöstä, kannattaa käyttää Classia.




Edellinen:Alipay RSA yksityinen avain ja julkisen avaimen yhden klikkauksen generointityökalu
Seuraava:C# käännä MySQL-ohjeluokka, tallenna se
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com