2011-01-09 18 views
5

asumir en una aplicación WinForm que tenemos en program.cs:¿Es posible crear un alias para una variable en C#?

static class Program 
{ 
    public static SomeClass someClass; 

    [STAThread] 
    static void Main() 
    { 
     //something 
    } 
} 

modo de usar someClass en otras clases adicionales en el proyecto actual debemos acceder Program.someClass

la cuestión es si podemos crear un alias para Program.someClass como por ejemplo c1 y use c1 en el código en lugar de Program.someClass?

+0

No, además de crear una var local que contiene una referencia a ella. – BoltClock

+0

Esta misma noción es contraria a la intuición, en mi humilde opinión. Incluso si es posible (hablando en términos que no pertenecen a los tipos de referencia y sus alias potencialmente múltiples 'que ocurren sintomáticamente), solo podría hacer que el mantenimiento del código sea más problemático, ¡y las personas escriben el código lo suficientemente malo como está! En cierto modo, requiere un mecanismo que es excesivo, creo. –

+1

¿Cuál es el punto? No deberías escribir todo a mano de todos modos; usa Intellisense –

Respuesta

6

Si usted está buscando para crear un alias para la muñeca de uso, hacerlo como un delegado en línea, así:

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

Pero acepto que hace que su código sea menos claro en la mayoría de los casos.

+1

@HPT: 'c1()' le devolverá esa instancia. Para que pueda ejecutar 'c1(). SomeClassMethod()' por ejemplo. – zerkms

+0

@zerkms: tienes razón. eso funciono. –

+0

@HPT: sigue siendo una dependencia. ¿Cómo recuperará la instancia 'c1' en' AnotherClass'? Si puede acceder a 'c1' - entonces también puede acceder a' Program.someClass'. – zerkms

1

sólo tiene que pasar ese objeto para cada clase que necesita para trabajar con él

+0

la pregunta es sobre la posibilidad amigo. Sé que no es útil. –

+2

@HPT: los programadores resuelven ** tareas reales **. Lo mejor es pasar el objeto. El mundo será mejor si alguien usa menos clases estáticas, por lo tanto, escriba un código más flexible. – zerkms

+0

+1 para un mejor enfoque, pero la pregunta era solo acerca de mi curiosidad y estoy buscando una manera de hacerlo, no resolviéndola borrando el problema principal: D –

2

Suponiendo que desea lograr algo así como macros en C/C++ y también desea deshacerse de "Programa" como naming scope, creo que no se puede hacer eso en C#.

+0

Esa es la pura verdad. – mireazma

Cuestiones relacionadas