Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 22702|Antwoord: 0

[Bron] Er zijn verschillende soorten rollups voor incasso's in C#

[Link kopiëren]
Geplaatst op 11-11-2014 08:44:59 | | |
Een collectie die een set objecten vertegenwoordigt die toegankelijk zijn door elk element te doorlopen (in het bijzonder kan het worden benaderd via foreach loop)
Een collectie bevat meerdere elementen, dat wil zeggen dat er een collectieklasse-object en N elementobjecten zijn

Omdat elke verzamelingsklasse de IEnumerable-interface implementeert, heeft elk verzamelingsklasseobject een GetEnumerator()-methode, die een object kan teruggeven dat de IEnumerator-interface implementeert, die noch een verzamelingsklasseobject noch een verzamelelementklasseobject is, maar een onafhankelijk klasseobject. Dit object laat je door elk elementobject in het collectieklasse-object itereren

Als de verzamelingsklasse een door de gebruiker gedefinieerde verzamelklasse is, moet de gebruiker zijn GetEnumerator()-methode implementeren, anders kunnen lussen niet worden gebruikt. Natuurlijk moet ook de IEnumerator-klasse die bij deze custom collection-klasse hoort (de klasse die de interface implementeert) worden aangepast

Bijvoorbeeld, de IEnumerator die overeenkomt met de ArrayList-verzamelklasse is ArrayListEnumeratorSimple
            De IEnumerator die overeenkomt met de Array-verzamelingsklasse is SZArrayEnumerator
      (Geen van beide klassen wordt behandeld in de .NET Framework Class Library-documentatie (MSDN))

1. De interfaces in System.Collocties die het gedrag van de collectie weergeven zijn:
1) ICollection
Definieer de grootte, het aantal enums en synchronisatiemethoden voor alle collecties. Afgeleid van IEnumerable
Het definieert het meest basale gedrag van de verzamelingsklasse, en alle verzamelklassen implementeren deze interface (basisinterface)
Maar het gedrag is te basaal: het is voornamelijk een Count-eigenschap, en het heeft weinig zin om het alleen te implementeren

2) IEnumerable
Exposeer een enumeratie die eenvoudige iteraties op een verzameling ondersteunt
Het heeft slechts één methode, GetEnumerator(), die een IEnumerator-interface teruggeeft waardoor het de collectie kan doorlopen
In principe implementeren alle verzamelklassen deze interface

3) IList
De IList-implementatie is een verzameling waarden die sorteerbaar zijn en toegankelijk zijn via index voor haar leden, en het implementeert zelf de ICollection- en IEnumerable-interfaces
is de abstracte basisklasse voor alle lijsten. Er zijn drie categorieën IList-implementaties: alleen-lezen, vaste grootte en variabele grootte.

4) IDENTIFICATIE
De IDictionary-implementatie is een verzameling sleutel/waardeparen die zelf de ICollection- en IEnumerable interfaces implementeert
is de basisinterface van een verzameling sleutel/waardeparen. Er zijn drie categorieën IDictionary-implementaties: alleen-lezen, vaste grootte en variabele grootte.
IDictionary kan een woordenboek, map of shashlijst worden genoemd, en het benadert waarden op basis van sleutels (van elk type).

2. De verzamelingsklassen die direct in System.Collecties kunnen worden gebruikt, zijn:
1) ArrayList
Interfaces implementeren: IList, ICollection, IEnumerable
Zolang de collectie niet wordt gewijzigd, kan ArrayList veilig meerdere lezers tegelijk ondersteunen
Naarmate elementen aan de ArrayList worden toegevoegd, wordt de capaciteit automatisch verhoogd op verzoek door herverdeling (2x verhoging)
Als je een array van objecten moet maken, maar je weet de grootte van de array niet van tevoren, kun je ArrayList gebruiken
ArrayList verwijst naar alle elementen als objecten, dus het moet getypeerd worden bij het openen van elementen in ArrayList
Voordelen: Dynamisch de grootte veranderen, flexibel en handig invoegen en verwijderen van elementen, sorteerbaarheid
Nadelen: De insertieprestaties zijn niet zo goed als die van arrays, niet van sterke types

2) BitArray
Interfaces implementeren: ICollection en IEnumerable
Beheer gecomprimeerde arrays van bitwaarden.

3) Hashtabel
Interfaces implementeren: IDictionary, ICollection, IEnumerable
Je kunt vrij elementen toevoegen en verwijderen aan de Hashtable, sommige zoals ArrayList, maar dan zonder de prestatie-overhead

4) SortedList
Interfaces implementeren: IDictionary, ICollection, IEnumerable
SortedLIst combineert de voordelen van ArrayList en Hashtable, en kan worden gesorteerd op sleutelwaarde

5) Wachtrij
Interfaces implementeren: ICollection en IEnumerable
Queques zijn wachtrijen, first-in, first-out toegang tot individuele elementen
Je kunt de GetEnumerator()-methode van het Queque-object aanroepen om het IEnumerator-object door de elementen in de wachtrij te laten itereren

6) Stapelen
Interfaces implementeren: ICollection en IEnumerable
Een stack is een stack die individuele elementen op een last-in, first-out basis toegang geeft
Je kunt de GetEnumerator()-methode van het Stack-object aanroepen om het IEnumerator-object door de elementen in de stack te laten itereren

3. De hierboven genoemde verzamelingsklassen zijn allemaal algemene verzamelklassen, en de meeste elementen die ze accepteren zijn van het Object-type, wanneer het object wordt geplaatst in
Na de verzameling gaat de oorspronkelijke type-informatie verloren - dat wil zeggen, deze algemene verzamelingsklassen zijn niet sterk getypeerd
De oplossing is om sterk getypeerde verzamelingsklassen te gebruiken
System.Collections-naamruimte
System.Collections.Specialized namespace Sommige klassen kunnen aan de eisen voldoen en direct worden gebruikt of geërfd





Vorig:Een open brief aan de meerderheid van de pikken op de vooravond van Singles' Day
Volgend:C# Generieke Range Rover (Bocht)
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com