<?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)'
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.
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.
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....
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?