C# indexeur méthode

Messages postés
6
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
13 avril 2007
- - Dernière réponse : Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
- 12 avril 2007 à 16:22
Bonjour,

Je regarde les interfaces et classes, plus particulièrement l'interface _Worksheet, l'interface Worksheet la classe WorksheetClass sur msdn2 (relatif une feuille excel).

Bref:

La classe WorksheetClass implémente l'interface _Worksheet et l'interface Worksheet. Ok.

Je m'intéresse à Range. Normalement, je fais monWorksheet.Range("A1").Text et j'obtiens le texte de la cellule A1 de la feuille Excel.

Donc je regarde dans l'interface _Worksheet:




Range this[
[In] object Cell1,
[In, Optional] object Cell2
] {get;}





C'est donc un indexeur.

Et dans la classe WorksheetClass:





public

virtual Range this[
[In] object Cell1,
[In, Optional] object Cell2
] {get;}







Si c'est un indexeur, je devrais taper: monWorksheet["A1"].Text, non?

Quelqu'un peut-il m'expliquer la subtilité?

Merci beaucoup

Koo
Afficher la suite 

4 réponses

Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
6 février 2009
1
0
Merci
Salut, je n'ai pas regardé, ni testé mais pour moi, c'est tout simplement parce que :
monWorksheet.Range("A1") est une méthode de monWorksheet
et
monWorksheet["A1"] est une propriété de monWorksheet

les deux doivent faire la même chose.

<hr />
ZeBobo5
N'oubliez pas de cloturer votre post.
Commenter la réponse de zebobo5
Messages postés
6
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
13 avril 2007
0
Merci
Merci ZeBobo5.

J'ai compris la différence entre méthode et propriété. Ce que je ne comprends pas par contre, c'est que dans l'interface, on déclare l'indexeur



(ou comme tu l'appelles propriété)



:




Range this[ [In] object Cell1, [In, Optional] object Cell2 ] {get;}



Dans la classe, on doit implémenter.

Dans l'interface, il est nul question d'une méthode Range.

Et si je tape


monWorksheet.Range("A1")

j'obtiens un résultat alors que



monWorksheet["A1"] donne une erreur.

Est-ce que l'indexeur se transforme en méthode? et sous quelle baguette magique?

Merci.

Koo
Commenter la réponse de kooroza
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
0
Merci
Comme ça non ??

monWorksheet.Range[ "A1" ];
Commenter la réponse de Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
0
Merci
Ah non mince.. j'ai repondu trop vite sans lire correctement les définitions.
Commenter la réponse de Lutinore