SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: ehguacho en Domingo 11 de Abril de 2010, 02:29

Título: "#define" pero en C#?
Publicado por: ehguacho en Domingo 11 de Abril de 2010, 02:29
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! ^_^
Título: Re: "#define" pero en C#?
Publicado por: eltruhanero en Domingo 11 de Abril de 2010, 03:26
http://www.justfuckinggoogleit.com/sear ... efine+msdn (http://www.justfuckinggoogleit.com/search.pl?query=define+msdn" onclick="window.open(this.href);return false;)
Título: Re: "#define" pero en C#?
Publicado por: ehguacho en Domingo 11 de Abril de 2010, 03:48
muchas gracias! :D
Título: Re: "#define" pero en C#?
Publicado por: ehguacho en Domingo 11 de Abril de 2010, 03:57
intente donde lo intente hacer me tira error, me dice q no puedo hacer un "#define" despues del primer token del archivo :mellow:
Título: Re: "#define" pero en C#?
Publicado por: eltruhanero en Domingo 11 de Abril de 2010, 04:18
bueno me parece que tenes q leer esto viewtopic.php?f=1&t=5710 (http://foros.solocodigo.com/viewtopic.php?f=1&t=5710" onclick="window.open(this.href);return false;)
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.
Título: Re: "#define" pero en C#?
Publicado por: ehguacho en Domingo 11 de Abril de 2010, 04:40
ok muchas gracias
Título: Re: "#define" pero en C#?
Publicado por: Jeysscarr en Lunes 12 de Abril de 2010, 02:19
jeje no sera con "CONST"

en c++: #define ALTO 500
en c#: public const Alto=500;
Título: Re: "#define" pero en C#?
Publicado por: ehguacho en Lunes 12 de Abril de 2010, 03:06
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"
Título: Re: "#define" pero en C#?
Publicado por: Jeysscarr en Lunes 12 de Abril de 2010, 04:47
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
Título: Re: "#define" pero en C#?
Publicado por: Jeysscarr en Lunes 12 de Abril de 2010, 05:03
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...;
Título: Re: "#define" pero en C#?
Publicado por: ehguacho en Lunes 12 de Abril de 2010, 05:30
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 ;)