Y a-t-il un moyen d'appeler une fonction à l'intérieur d'un espace de noms sans déclarer la classe à l'intérieur du C #. p>
Par exemple, si j'avais 2 méthodes exactement identiques et que vous devriez être utilisée dans tous mes projets C #, y a-t-il un moyen de simplement prendre ces fonctions et de la faire dans une DLL et de simplement dire «à l'aide de MyTwomethods» sur haut et commencez à utiliser les méthodes sans déclarer la classe? p>
En ce moment, je fais: Myclass.mymethod (); p>
Je veux faire: Mymethod (); p>
merci, Rohit p>
4 Réponses :
dépend du type de méthode que nous parlons, vous pouvez examiner les méthodes d'extension: P>
http://msdn.microsoft.com/en-us/library/ bb383977.aspx p>
Cela vous permet d'ajouter facilement des fonctionnalités supplémentaires aux objets existants. P>
Vous ne pouvez pas déclarer des méthodes en dehors d'une classe, mais vous pouvez le faire à l'aide d'une classe d'assistance statique dans un projet de bibliothèque de classe. Utilisation (après avoir ajouté une référence à votre classe. Bibliothèque). P> HelperClass.HelperMethod();
Existe-t-il un moyen d'appeler "Méthode d'assistance ()" sans la classe d'assistance?
Il n'y a pas. Les méthodes doivent être contenues dans une classe ou une structure.
Si vous déclarez à l'aide de Static HelperClass code>, vous pouvez appeler
helpermethod () code>
Suite à partir de la suggestion d'utiliser des méthodes d'extension, vous pouvez définir la méthode une méthode d'extension éteinte de System.Object, à partir de laquelle toutes les classes dérivent. Je ne préconiserais pas cela, mais ce qui se rapporte à votre question, cela peut être une réponse.
namespace SomeNamespace { public static class Extensions { public static void MyMethod(this System.Object o) { // Do something here. } } }
Je ne suis pas capable d'accéder à MyMethod sans appeler 'extensions.mymeThod ()' dans mon form_load d'une autre classe. Merci quand même.
Cela semblait vraiment cool jusqu'à ce que je me souvienne que la fonction principale de C # soit nécessaire pour être statique.
Mise à jour pour 2015: Non, vous ne pouvez pas créer de "fonctions libres" dans C #, mais en commençant par C # 6, vous pourrez appeler des fonctions statiques sans mentionner le nom de la classe. C # 6 aura l'entité "Utilisation statique" permettra à cette syntaxe: < Pré> xxx pré>
quelque therdfile.cs: p>