Vraag .net array - verschil tussen "Length", "Count ()" en "Rank"


Wat is het verschil tussen "Lengte", "Telling ()" en "Rang" voor .net-array?


36
2017-07-11 06:22


oorsprong


antwoorden:


Length is de eigenschap van array-object en het gebruik ervan is de meest effectieve manier om het aantal elementen in de array te bepalen (Array.Length in MSDN-documentatie)

Count() is een LINQ-uitbreidingsmethode die hetzelfde effectief werkt. Dit is van toepassing op arrays omdat arrays opsombare objecten zijn. Het heeft de voorkeur om te gebruiken Length omdat Count() is waarschijnlijk duurder (zie deze vraag voor verdere discussie en MSDN-documentatie over Count als referentie)

Rank is de eigenschap die het aantal dimensies (geheel ander ding) retourneert. Wanneer u een array declareert int[,] myArray = new int[5,10]; de Rank daarvan zal het 2 zijn, maar het bevat in totaal 50 elementen (MSDN op Rank-property).

EDIT: dankzij Kornelije Petak voor relevante MSDN-koppelingen.


46
2017-07-11 06:25



  • Length: Totaal aantal elementen in een rangschikking
  • LongLength: Hetzelfde als Length, maar geretourneerd als long (in het geval dat het> = 2 is31)
  • Count(): LINQ uitbreidingsmethode die ook met andere verzamelingstypen werkt
  • Rank: Aantal dimensies in array (altijd 1 voor vectoren). Alleen in .NET 3.5+.
  • GetLength(), GetLongLength(): Lengte van a bepaalde dimensie van een array
  • GetLowerBound(): Startindex van een bepaalde dimensie van een array; altijd 0 voor vectoren
  • GetUpperBound(): Ending-index van een bepaalde dimensie van een array; altijd Length - 1 voor vectoren

Interessant is dat er geen is GetLongUpperBound() of GetLongLowerBound()...


Nu we het over het onderwerp hebben, wat is het verschil tussen een rangschikking en een vector in .NET?

Arrays versus vectoren

Vectoren zijn wat u normaal "1D" -matrices in C # noemt. Echter, 1-dimensionale arrays zijn eigenlijk niet van een type zoals int[], maar ze zijn van het type int[*]. C # ondersteunt ze niet direct; ze kunnen echter worden gemaakt met Array.CreateInstanceen kunnen niet-nul ondergrenzen hebben. Ze zijn echter iets langzamer dan vectoren, omdat vectoren direct worden ondersteund in de CLR. Omdat 1-dimensionale arrays eigenlijk maar zelden worden gebruikt, heeft C # besloten om ze niet te ondersteunen (hoewel het wel kan gebruik ze door het gebruik van de var sleutelwoord, van een andere module die ze declareert!).


18
2017-07-11 06:29



  • Length is een eigenschap die het aantal elementen in een. retourneert Array.
  • Count() is een LINQ-extensie die hetzelfde doet op een IEnumerable. Optioneel kan het een predikaat als parameter aannemen en zal het het aantal elementen teruggeven dat daaraan voldoet.
  • Rank is een eigenschap die het aantal dimensies in een retourneert Array.

2
2017-07-11 06:27



Length is een eigenschap van Array sinds C # 1.x

Count()is een uitbreidingsmethode van IEnumerable<T>, omdat nu elk T[] gereedschap IEnumerable<T> impliciet.

Merk op dat voor een array, Count() is meestal veel langzamer dan Length, omdat toegang Length eigenschap is O (1), terwijl Countis voor IEnumerable<T>, dus het programma moet door de verzameling gaan en de telling krijgen, dat is O (n).

Rank geeft de demensies van de array.


1
2017-07-11 06:33



Lengte is de grootte van de array
Count () is het aantal items in de array (van system.linq)
Rangorde retourneert het aantal dimensies (a [] [] = 2, a [] = 1)


0
2017-07-11 06:26



Goed .Count()is voor IEnumerable, List of ArrayList soorten. Terwijl Lengthis voor Array.

Rank is om de aantal dimensies van een array.


0
2017-07-11 06:28