Propriété avec arguments

Résolu
Utilisateur anonyme - 3 févr. 2006 à 22:45
 Utilisateur anonyme - 4 févr. 2006 à 10:52
Bonjour,

Petit problème, je n'arrive pas à faire ce que je veux faire: snif.
Aussi, c'est normal que je pose la question.

Le Problème:
J'ai un tableau de 'string'.
Pour accéder à ce tableau, je veux faire une propriété en Lecture seule qui renvoie un élément du tableau dont on aura précisé l'index. Cela pour pas que l'utilisateur puisse remplacer le tableau ou modifier les valeurs.

Je veux faire en gros:

protected internal string[] TabStr; // Le tableau
public string Str(int Index) // La propriété
{
get // L'erreur (; excepted)
{
return TabStr[Index];
}
}

Ici, le tableau n'est pas défini, donc il retournera une erreur comme quoi il n'est pas initialisé. Mais le problème majeur c'est comment faire la propriété.

J'arrive à faire des propriétés sans arguments mais avec, rien !!!
J'ai un peut tout essayer, je n'ai pas trouvé.
Mais est-ce possible ?

Je travaille sous vs2005.

Merci, d'avance.

Kenji

2 réponses

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
3 févr. 2006 à 23:25
Salut,

En C# nous n'avons pas de propriétés indexées.

Soit tu passes par un indexeur directement dans la classe, elle devient en gros une classe de collection :
protected internal string[] TabStr; // Le tableau
public string this[int Index]
{
get
{
return TabStr[Index];
}
}

A l'utilisation :
string str = instance[index];

Soit tu veux garder la propriété "nommée", et auquel cas tu codes une classe de collection ReadOnlyStringCollection pour pouvoir faire qqch de ce genre :
protected internal string[] TabStr;
protected internal ReadOnlyStringCollection _strings = null;
public string Str
{
get
{
if ( this._strings == null )
{
this._strings = new ReadOnlyStringCollection(
}
return this._strings;
}
}

Ainsi à l'utilisation tu pourras avoir ce code :
string str = instance.Str[index];

/*
coq
MVP Visual C#
*/
3
Utilisateur anonyme
4 févr. 2006 à 10:52
Merci beaucoup coq, grâce à ca je vais pouvoir avancer mon prog.
La première solution me convient parfaitement.

Encore Merci.

Kenji
0