Problème de déclaration de fonction de classe

Résolu
otavioreis
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
- 17 août 2007 à 10:27
otavioreis
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
- 20 août 2007 à 10:23
Bonjour,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




J’ai crée une bibliothèque de classes en C#. Il y a fonction 1, fonction 2 et fonction 3.



 




En sortie, j’ai besoin des résultats de fonction 1 et 3. Les fonctions 1 et 2 sont utilisées en interne pour calculer des variables de la fonction 3(F3 fait appel à F1 et à F2).



 




Mon pb est :



-         pour que je puisse utiliser F1 et F2 en interne, je les ai déclaré  en tant que public static F1 et public static F2.



-         Par contre, pour récupérer le résultat de F1 et F3 en externe, je ne peux pas les déclarer en static. Mais quand j’enlève le static de F1, j’ai le suivant message d’erreur :



-        
 




Erreur        1          Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'Test.Class1.F1(string, int, int, double)'     



 




Comment je peux résoudre ce problème, SVP ?



 




Merci,





Otavio Reis

7 réponses

cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
17 août 2007 à 11:00
Je crois que tu as confondu les modificateurs d'accès (public, private, protected, internal et protected internal) et le modificateur static qui permet de définir un membre qui appartient au type plutôt qu'aux instance du type.
Déclarer une méthode static ne permet en rien d'empêcher son utilisation en dehors du type si elle possède un niveau d'accessibilité public.

Tu devrais revoir les bases concernant les modificateurs d'accès et le modificateur static :
Modificateurs d'accès (Guide de programmation C#)<!---->
Classes statiques et membres de classe statique (Guide de programmation C#)<!---->

/*
coq
MVP Visual C#
CoqBlog
*/
3
ricklekebekoi
Messages postés
303
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
24 avril 2009
5
17 août 2007 à 22:06
Des new !

Au lieu de faire MaClasse.F1();, faut faire
MaClasse MonObjet = new MaClasse();
MonObjet.F1();

Eric
3
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
17 août 2007 à 10:42
Salut,

Qu'est ce que tu entends pas "en interne" et "en externe" ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
otavioreis
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

17 août 2007 à 10:48
interne = fonction qui est utilisé seulement dans la classe. Elles sont utilisée pour calculer des paramètre pour une autre fonction de cette classe (F3) . Ces fonctions sont appéllées par la fonction 3.
externe, fonction 3, fonction qui doit être appéllé en dehors de la classe. c'est à dire, function qui un autre programme doit appeller.

Otavio Reis
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
otavioreis
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

17 août 2007 à 12:45
Merci bcp Coq!

Je comprends bcp mieux le problème. La question est: "Pour quoi quand j'enlève le static de ma déclaration, j'ai le erreur suivant: Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'Test.Class1.F1(string, int, int, double)'?"

Pour quoi je suis oubligé de le laisser en static? Je pensais que je pourrais choisir entre static ou pas....

MErci,
Otavio Reis
0
otavioreis
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

17 août 2007 à 14:02
Je pose ma question autrement. Si j'ai deux fonctions: F1 et F2 et que F1 est aussi appéllée par F2, si je veux récuperer le résultat des deux fonctions, je dois les déclarer en tant que public. en même temps, je dois créer F1 avant de appéller F2. Alors, comment faire cela sans utiliser le static?

Merci,
Otavio Reis
0
otavioreis
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

20 août 2007 à 10:23
Merci bcp,

ça a marché!!!

Otavio Reis
0