• Jueves 28 de Marzo de 2024, 19:40

Autor Tema:  "#define" pero en C#?  (Leído 4513 veces)

ehguacho

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
"#define" pero en C#?
« en: Domingo 11 de Abril de 2010, 02:29 »
0
hola! tengo una pequeña duda, espero puedan ayudarme! como hago para hacer un "#define", como se hacia en el viejo C/C++, pero en C#?

saludos a todos y gracias de antemano! ^_^

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #1 en: Domingo 11 de Abril de 2010, 03:26 »
0

ehguacho

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #2 en: Domingo 11 de Abril de 2010, 03:48 »
0
muchas gracias! :D

ehguacho

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #3 en: Domingo 11 de Abril de 2010, 03:57 »
0
intente donde lo intente hacer me tira error, me dice q no puedo hacer un "#define" despues del primer token del archivo :mellow:

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #4 en: Domingo 11 de Abril de 2010, 04:18 »
0
bueno me parece que tenes q leer esto viewtopic.php?f=1&t=5710
antes de preguntar trata de buscar vos la respuesta, sobre todo si en vez de problemas es tema de sintaxis.

pega el codigo del error que te da para buscarle una solución...suponiendo que vos ya intentastes y no pudistes.

Saludos, Daniel.

ehguacho

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #5 en: Domingo 11 de Abril de 2010, 04:40 »
0
ok muchas gracias

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #6 en: Lunes 12 de Abril de 2010, 02:19 »
0
jeje no sera con "CONST"

en c++: #define ALTO 500
en c#: public const Alto=500;
Nuestro poder está creciendo mas rápido que nuestra sabiduria

ehguacho

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #7 en: Lunes 12 de Abril de 2010, 03:06 »
0
Cita de: "Jeysscarr"
jeje no sera con "CONST"

en c++: #define ALTO 500
en c#: public const Alto=500;
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

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #8 en: Lunes 12 de Abril de 2010, 04:47 »
0
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#
  1. #define PI 3.14
  2. #define AREA_CIRCULO(x) PI * (x) * (x)
  3.  //C++
  4. //Ahora podemos usar la macro como si fuera función normal:
  5.  
  6. void main() {
  7.    int a;
  8.    a = AREA_CIRCULO(3);
  9. }
  10.  
  11. //Durante la compilación la macro se expande a:
  12.  
  13.   a = 3.14 * (3) * (3)
  14.  
  15. //y obtenemos el resultado esperado.
  16.  

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
« última modificación: Lunes 12 de Abril de 2010, 05:03 por Jeysscarr »
Nuestro poder está creciendo mas rápido que nuestra sabiduria

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #9 en: Lunes 12 de Abril de 2010, 05:03 »
0
Cita de: "ehguacho"
Cita de: "Jeysscarr"
jeje no sera con "CONST"

en c++: #define ALTO 500
en c#: public const Alto=500;
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"

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...;
Nuestro poder está creciendo mas rápido que nuestra sabiduria

ehguacho

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: "#define" pero en C#?
« Respuesta #10 en: Lunes 12 de Abril de 2010, 05:30 »
0
es lo que intente hacer! pero igualmente me dice que no puedo hacer definiciones antes del primer token del archivo. por ahora igualmente para definir constantes simbolicas puedo usar "const" y listo, el tema es que tengo un proyecto que de poder hacer los #define como en el C++ me ahorraria muchisimas lineas de codigo, que no solo me realentizarian la coficacion sino que la harian mas dificil de mantener y depurar. espero que aunque sea me salven un poco los #region-#endregion :(

muchas gracias por tu respuesta igualmente Jessycar ;)