CLR: .Net / Mono / Boo / Otros CLR > C#

 "#define" pero en C#?

<< < (2/3) > >>

ehguacho:
ok muchas gracias

Jeysscarr:
jeje no sera con "CONST"

en c++: #define ALTO 500
en c#: public const Alto=500;

ehguacho:

--- Cita de: "Jeysscarr" ---jeje no sera con "CONST"

en c++: #define ALTO 500
en c#: public const Alto=500;
--- Fin de la cita ---
gracias por tu respuesta Jeysscarr! pero eso no es precisamente lo que estoy buscando, porque a los #define los uso (usaba, mejor dicho, en C++) como "pseudo-funciones" digamos...
por ejemplo:

Z(VAR) VAR++; X + Y

...entonces podia pasar argumentos a los "#define" (en el ejemplo el parametro seria VAR). eso es justamente lo q quiero hacer. de ser posible los usaba asi porque es mucho mas rapido que andar usando funciones, incluso si estas las declaraba como "static inline"

Jeysscarr:
mmmmm ok, tengo entendido que las directivas de preprocesador de C# son totalmente iguales que las de C++ con la unica limitación de que estas se tienen que hacer antes de escribir codigo alguno C# en el fichero en donde se describan...

es decir antes de cualquier Using o cosa C# por el estilo...

Ejemplo:

--- Código: C# ---#define PI 3.14#define AREA_CIRCULO(x) PI * (x) * (x) //C++//Ahora podemos usar la macro como si fuera función normal: void main() {    int a;   a = AREA_CIRCULO(3); } //Durante la compilación la macro se expande a:   a = 3.14 * (3) * (3) //y obtenemos el resultado esperado.  
Eso seria en C++..... pero lamentablemente No es posible en C #. El #define sólo permite definir símbolos. En su lugar utiliza un método estático que toma un objeto como parámetro

Jeysscarr:

--- Cita de: "ehguacho" ---
--- Cita de: "Jeysscarr" ---jeje no sera con "CONST"

en c++: #define ALTO 500
en c#: public const Alto=500;
--- Fin de la cita ---
gracias por tu respuesta Jeysscarr! pero eso no es precisamente lo que estoy buscando, porque a los #define los uso (usaba, mejor dicho, en C++) como "pseudo-funciones" digamos...
por ejemplo:

Z(VAR) VAR++; X + Y

...entonces podia pasar argumentos a los "#define" (en el ejemplo el parametro seria VAR). eso es justamente lo q quiero hacer. de ser posible los usaba asi porque es mucho mas rapido que andar usando funciones, incluso si estas las declaraba como "static inline"
--- Fin de la cita ---

El problema es que el preprocesador de C# solo usa #define y /define para definir simbolos y despues evaluarlos con #if y #else.. por ejemplo para usar correctamente un #define en c# deberias usarlo antes de los using y solo determinando el nombre del simbolo:

#define DEBUG

using System...;

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa