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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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
Rejoignez-nous