7
votes

Est-il possible de faire des alias pour une variable en C #?

Supposez dans une application Winform Nous avons dans Program.cs.cs : xxx

pour utiliser soméclass dans d'autres classes dans le projet actuel Nous devrions accéder à programme.someclass

La question est de faire un alias pour programme.someclass comme par exemple C1 C1 et utilisez C1 dans le code au lieu de programme.someclass ?


6 commentaires

Non, en plus de créer un var local qui contient une référence à celui-ci.


Cette notion même est contre-intuitive, imho. Même si possible (parlant dans des termes non relatifs à des types de référence et à leurs alias potentiellement multiples »qui se produisent symptomatiquement), il ne pouvait que la maintenance du code plus problématique et que les gens écrivent suffisamment de code si! Cela appelle en quelque sorte un mécanisme qui est, si rien d'autre, surkill, je pense.


À quoi ça sert? Vous ne devriez pas taper tout cela à la main quand même; utiliser IntelliSense.


@Anonymous Coward: Même si vous n'aimez pas le code, la question est claire et légale. Je donne +1 pour annuler le bowvote


@cody: la question concerne à peu près la possibilité mec. Je sais que ce n'est pas utile.


+1, je pense que c'est une bonne question et pense qu'il n'ya aucun moyen de le faire, mais si c'était possible était drôle.


3 Réponses :


1
votes

Il suffit de passer cet objet à chaque classe qui doit fonctionner avec elle


4 commentaires

La question concerne uniquement la possibilité mec. Je sais que ce n'est pas utile.


@ Hpt: les programmeurs résolvent tâches réelles . Mieux c'est passer un objet. Le monde sera meilleur si quelqu'un utilisera moins de classes statiques, écrivez donc un code plus flexible.


+1 Pour une meilleure approche, mais la question était de ma curiosité et je cherche un moyen de le faire ne pas résoudre en supprimant le problème principal: D


@ Hpt: Je suis sûr que tout problème peut être résolu sans de tels hacks ;-)



7
votes

Si vous cherchez simplement à alias la convivialité de la poitriste, faites-le comme un délégué en ligne, comme celui-ci:

Func<SomeClass> c1 = () => Program.someClass;


3 commentaires

@ Hpt: c1 () vous retournera cette instance. Donc, vous pouvez effectuer c1 (). Someclassmethod () par exemple.


@ Hpt: c'est toujours une dépendance. Comment allez-vous récupérer C1 instance dans autreclass ? Si vous pouvez accéder à C1 - vous pouvez également accéder à programme.someclass .


Pourquoi faire ça? Vous pouvez le faire: someclass c1 = programme.someclass .



3
votes

En supposant que vous souhaitiez atteindre quelque chose comme des macros en C / C ++ et que vous souhaitez également vous débarrasser du "programme" en tant que portée de nommage, je pense que vous ne pouvez pas le faire en C #.


1 commentaires

C'est la vérité simple.