C# indexeur méthode

kooroza Messages postés 6 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 13 avril 2007 - 12 avril 2007 à 11:58
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre 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

4 réponses

zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
12 avril 2007 à 13:53
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.
0
kooroza Messages postés 6 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 13 avril 2007
12 avril 2007 à 14:38
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 avril 2007 à 16:13
Comme ça non ??

monWorksheet.Range[ "A1" ];
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 avril 2007 à 16:22
Ah non mince.. j'ai repondu trop vite sans lire correctement les définitions.
0
Rejoignez-nous