Problème de déclaration de fonction de classe [Résolu]

Signaler
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
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

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
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
*/
Messages postés
303
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
24 avril 2009
5
Des new !

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

Eric
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
Salut,

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

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

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
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

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
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

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
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

Merci bcp,

ça a marché!!!

Otavio Reis