Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classe et Constante

7 réponses
Avatar
Patrick
Bonjour,

Dans une classe j'aimerais déclarer une constante qui pourrait être utilisée
par le code qui utilise la classe. Comment puis-je faire cela ?
Pour le moment, je n'ai trouvé comme solution que de mettre une fonction qui
renvoie la constante.

Merci pour votre aide.

--
Patrick

7 réponses

Avatar
parci
Patrick a écrit :
Bonjour,

Dans une classe j'aimerais déclarer une constante qui pourrait être utilisée
par le code qui utilise la classe. Comment puis-je faire cela ?
Pour le moment, je n'ai trouvé comme solution que de mettre une fonction qui
renvoie la constante.



Une propriété plutôt qu'une fonction mais ça revient au même.
Si ta constante est de type Long tu peux faire la déclarer avec Enum
Public dans la classe (elle sera visible partout). Un peu bizarre
d'ailleurs que les constantes publiques soient interdites mais pas les
Enum. Si quelqu'un voit pourquoi.
Avatar
Jacques93
Bonjour,
parci a écrit :
Patrick a écrit :
Bonjour,

Dans une classe j'aimerais déclarer une constante qui pourrait être
utilisée par le code qui utilise la classe. Comment puis-je faire cela ?
Pour le moment, je n'ai trouvé comme solution que de mettre une
fonction qui renvoie la constante.



Une propriété plutôt qu'une fonction mais ça revient au même.



Mais c'est plus propre :-)

Si ta constante est de type Long tu peux faire la déclarer avec Enum
Public dans la classe (elle sera visible partout). Un peu bizarre
d'ailleurs que les constantes publiques soient interdites mais pas les
Enum. Si quelqu'un voit pourquoi.



Hypothèse sur le dernier point :

On prend :

Un projet dll ActiveX, qui comprend donc un module de
classe comportant un Public Enum, et on le compile

Un projet standard qui utilise cette dll (ajout d'une référence)

Les valeurs de l'énumération restent dans la dll. Dans le cas d'un
changement de valeur dans l'énumération, il suffit modifier, recompiler
et distribuer la dll. Les projets l'utilisant restent inchangés.

Dans le cas d'une constantes, c'est lors de la compilation que les noms
de constantes sont remplacés par leur valeur, elles se retrouveraient
donc dans l'exe du projet standard, et non plus dans la dll. Dans le cas
de modification, il faudrait recompiler et distribuer tous les projets
utilisant cette dll.

Donc constantes Public dans un module 'standard' OK, mais pas dans un
module de classe.

--

Cordialement,

Jacques.
Avatar
Patrick
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction ?

Encore merci.

--
Patrick


"parci" wrote:

Patrick a écrit :
> Bonjour,
>
> Dans une classe j'aimerais déclarer une constante qui pourrait être utilisée
> par le code qui utilise la classe. Comment puis-je faire cela ?
> Pour le moment, je n'ai trouvé comme solution que de mettre une fonction qui
> renvoie la constante.

Une propriété plutôt qu'une fonction mais ça revient au même.
Si ta constante est de type Long tu peux faire la déclarer avec Enum
Public dans la classe (elle sera visible partout). Un peu bizarre
d'ailleurs que les constantes publiques soient interdites mais pas les
Enum. Si quelqu'un voit pourquoi.



Avatar
jean-marc
"Patrick" wrote in message
news:
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
?



Hello,

je signale juste qu'on peut utiliser le mécanisme de propriétés pour définir
une constante ou variable en lecture seule. Il suffit dans ce cas de ne
définir
que la property GET et pas le LET/SET.

D'un point de vue strictement sémantique, il est certain que pour ce cas
une propriété est plus appropriée, plus propre.^

Mais l'emploi d'une fonction n'est pas choquant en soi dans ce contexte.
A ce niveau, je dirais qu'on peut presque parler de préférences persos.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Patrick
Je suis entièrement d'accord avec toi.

Merci.

--
Patrick


"jean-marc" wrote:


"Patrick" wrote in message
news:
> Merci beaucoup.
>
> Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
> souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
> une
> fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
> importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
> ?

Hello,

je signale juste qu'on peut utiliser le mécanisme de propriétés pour définir
une constante ou variable en lecture seule. Il suffit dans ce cas de ne
définir
que la property GET et pas le LET/SET.

D'un point de vue strictement sémantique, il est certain que pour ce cas
une propriété est plus appropriée, plus propre.^

Mais l'emploi d'une fonction n'est pas choquant en soi dans ce contexte.
A ce niveau, je dirais qu'on peut presque parler de préférences persos.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;







Avatar
jean-marc
"Patrick" wrote in message
news:
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
?



En complément, voici un lien vers la doc de VB ou il y a une intéressante
discussion à ce sujet :

http://msdn.microsoft.com/en-us/library/aa242128(VS.60).aspx

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Bonjour,
jean-marc a écrit :
"Patrick" wrote in message
news:
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
?



En complément, voici un lien vers la doc de VB ou il y a une intéressante
discussion à ce sujet :

http://msdn.microsoft.com/en-us/library/aa242128(VS.60).aspx

Cordialement;




Penser également le cas des Contrôles ActiveX (.ocx), une Propriété
apparaitra automatiquement dans la fenêtre de propriété de VB, pas une
fonction.

Bon c'est dans le lien de Jean-Marc, mais j'envoie, j'aurai pas tapé
pour rien :-)

--

Cordialement,

Jacques.