en C #, est-il possible d'accéder à une variable d'instance via une méthode statique dans différentes classes sans utiliser de paramètre passant? P>
Dans notre projet, j'ai une catégorie code> de la catégorie d'accès aux données code> qui a beaucoup de méthodes statiques. Dans ces méthodes, la valeur du délai d'attente code> SQLCOMMAND code> a été codée dur. Dans une autre classe ( Je ne veux pas coder trop d'utiliser le passage du paramètre. Avez-vous une autre solution plus facile que le passage du paramètre? P> DAC code>) dans notre cadre, il existe de nombreuses méthodes d'instance qui appellent ces méthodes statiques. p>
5 Réponses :
Bien sûr, vous pouvez passer une instance comme paramètre sur la méthode. Comme: mais il ne serait pas possible d'obtenir des variables d'instance autrement. P> p>
Une méthode statique n'a aucune instance pour travailler avec, donc non. Ce n'est pas possible sans le passage du paramètre. P>
Une autre option pour que vous puissiez utiliser une instance statique de la classe (l'exemple de Mark affiche cette méthode au travail) Bien que, de votre exemple, je ne suis pas sûr que cela résoudrait votre problème. P>
Personnellement, je pense que le passage du paramètre va être la meilleure option. Je ne suis toujours pas sûr de savoir pourquoi tu veux t'en écarter. P>
La modification se résume à "Je ne veux pas", ce qui n'est pas une bonne raison technique. L'alternative est vraiment vraiment mauvaise, sinon impossible.
Oui, il est possible d'accéder à une variable d'instance à partir d'une méthode statique sans utiliser de paramètre, mais seulement si vous pouvez y accéder via quelque chose qui est déclaré statique. Exemple:
+1, mais oh L'horreur des variables globales !
Non, vous ne pouvez pas. P>
Si vous souhaitez accéder à une variable d'instance, votre méthode par définition ne doit pas être statique. p>
Qu'en est-il d'accéder aux propriétés d'instance des singletons?
@Richard: Avec un singleton, vous avez une instance, et les méthodes ne seraient pas statiques dans ce cas. Seule la méthode pour obtenir l'instance Singleton est statique.
Oui, cela peut, tant qu'il a une instance d'objet dans la portée. Singletons par exemple ou des objets créés dans la méthode elle-même ..
Prenons par exemple un scénario commun: P>
public static string UserName { return System.Web.HttpContext.Current.User.Identity.Name; }
Une méthode statique n'est pas associée à aucune instance, alors comment vous attendez-vous à ce que cela connaisse quelle instance accéder à un membre de?