11
votes

GetUpperbound () et getlowerbound () fonction pour le tableau

Quelqu'un peut-il s'il vous plaît dire ce que font les deux fonctions? Ils prennent un argument entier qui est dit d'être une dimension. Mais comment la valeur de cet entiteur change la sortie?

ci-dessous est un exemple que j'ai couru. xxx

n'importe quelle idée pourquoi getlowerbound () est toujours de retour 0? Si cela retourne toujours 0 alors pourquoi besoin d'appeler cette méthode?


5 commentaires

Un tableau peut avoir plus d'une dimension. Voir msdn.microsoft.com/en-us/ Bibliothèque / 2YD9WWZ4 (v = vs.71) .aspx


@Patashu rien n'est écrit sur ces fonctions dans ce lien. Pouvez-vous s'il vous plaît dire comment fonctionnent les fonctions?


Google, premier résultat: MSDN.MICROSOFT.COM/EN-US / Bibliothèque / ...


Quelques exemples: dev.fyicenter.com/dot-net-Tutoriel -Pour-débutants / ...


De retour dans les journées de VB6, il était courant d'avoir une limite inférieure de 1, maintenant des jours pour être CLR Complient les tableaux doivent avoir une limite inférieure de 0. msdn.microsoft.com/en-us/library/t5dkx9yy (v = vs.90) .aspx


3 Réponses :


6
votes

Le paramètre entier sur getUpper / BASTBOUND () Spécifie la dimension.

Quelques exemples: xxx

tandis que les tableaux définis dans C # ont Limite inférieure = 0 et limite supérieure = longueur - 1, les matrices d'autres sources (par exemple, COMTEROP) peuvent avoir des limites différentes, de sorte que ceux qui fonctionnent avec Excel Interop par exemple seront familiers avec des tableaux inférieurs à la limite inférieure = 1, limite supérieure = longueur .


0 commentaires

2
votes

Quelqu'un peut-il s'il vous plaît dire ce que les deux fonctions font?

Il est écrit dans leurs pages MSDN. Ils l'index du premier / dernier élément de la dimension spécifiée dans le tableau. Jetez un oeil Array.GetUpperBound < / a> et Array.GetLowerBound

Ils prennent un argument entier qui est dit être dimension.

Oui, Patashu mentionné , les tableaux peuvent avoir multidimension .

Toute idée pourquoi GetLowerBound () retourne toujours 0? Si ce toujours renvoie 0 alors pourquoi avons-nous besoin d'appeler cette méthode?

Dans un tableau, toutes les dimensions peuvent avoir leur propre limites inférieure et uppor. Ainsi, ces méthodes peuvent créer des résultats différents pour chaque dimension du tableau.

Notez que, bien que la plupart des tableaux dans le .NET Framework sont basés sur zéro ( qui est, le GetLowerBound méthode retourne à zéro pour chaque dimension d'un tableau ), le cadre .NET ne matrices de support qui ne sont pas basées zéro. De tels réseaux peuvent être créés avec le CreateInstance (Type, Int32 \ [\], Int32 \ [\] ) méthode , et peut également être renvoyé du code non managé.

Vérifiez;


2 commentaires

@Downvoter soin de commenter afin que je puisse voir où je pourrais me tromper?


Il est également possible d'obtenir des tableaux limités inférieurs non nuls à partir de Microsoft.Office.interop.excel, c'est-à-dire. Data = (objet []) Plage.Value2; Renvoie un tableau unique sur C #



22
votes

Peut être quelques exemples permettent de préciser le sujet pour vous

Nous utilisons getupperbound () pour connaître la limite supérieure d'un tableau pour , Comme ça: xxx

généralement, getlowerbound () retourne 0 , puisque les tableaux sont basés sur zéro < / em> par défaut, Mais dans certains cas rares, ils ne sont pas: xxx

boucle typique à l'aide getlowerbound et getUpperbound est < Pré> xxx


2 commentaires

Bonjour Concernant les commentaires ci-dessus, voulez-vous dire les modifications que j'ai soulignées et entourées de ***** ci-dessous, plutôt que ce qui est ci-dessus? Légèrement déroutant pour un noob comme moi // retourne 6: 0ème dimension a 7 éléments, et la limite supérieure est donc de 7 à 1 = 6; int hauteur00 = a.getupperbound (0); // retourne 8: **** 1er ***** dimension a 7 éléments, 1st - 9 et la limite supérieure est de 9 à 1 = 8; int hauteur1 = a.getupperbound (1); // retourne 10: ***** 2nd ***** dimension a 7 articles, 1st - 9, 2e - 11 et la limite supérieure de 11 - 1 = 10;


@Bkspurgeon: lorsque nous déclarons un tableau comme int [] x = int [3]; signifie que x a 3 éléments: x [0], x [1], x [2] , afin que vous puissiez voir le dernier élément (qui est x [2] ) a index 2 == 3 - 1 ( longueur - 1 ); En général, int [] x = int [n] nous aurons x.longueur == n et x.geupperbond (0) == n - 1