¿Cómo convierto una variable en una constante literal?
Si asigno una variable a un const (Const directorio = variable), me da error.
| ||||
Una constante no puede recibir una variable, porque perderia su propiedad de constante, como tu lo indicas tiene que recibir un valor literal esto es valido constante = 1 esto no es valido para VB, ya que el tipo de constantes son estaticas, no aceptan una expresion variable = 1 constante = variable Y para responder a la duda de El_Metallick, en su sentido extricto una variable es una localidad de memoria de la cual no sabemos su ubicacion, y que puede cambiar su valor a lo largo de la ejecucion de un programa, las constantes son parecidas, pero no cambiaran su valor mas que cargando el programa de nuevo, esto te permite poder usarla multiples veces sin temor a equivocarte, y se dimensionan en la parte mas comoda de tu codigo, generalmente en la parte de arriba, podria decirse tambien que a lo mejor seria lo mismo que hard codearlas, pero no lo es. Supongase un valor que tiene que ser utilizado 50 veces a lo largo de un programa, este valor solo se dimensionara una vez y una sola vez, si se hard codea, tendras que modificarlo las 50 veces, si utilizas una variable, corres el riesgo de modificar su valor por accidente durante la ejecucion de tu programa. Bueno, eso es mi aporte. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
pero U_G si asigno a una variable unica un valor fijo el cual no lo cambio durante la ejecucion, deveria quedar con el mismo valor... osea en el fondo seria como una "constante" en cuanto a su funcion dentro de la aplicacion... pero no en tipo... eventualmente podria dar errores??? yo no le veo nada de malo a hacerlo asi... pero en fin eso nada mas
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
Si Pero como te dije anteriormente, a veces simplemente puedes tener un error humano, especialmente cuando tu aplicacion es mediana/grande, y las convenciones de los lenguajes de programacion, pues son para usarse no crees? entonces si tienes la opcion de utilizar constantes, y es lo que requieres, creo que la mejor practica es usarlas. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Gracias por la explicación, u_goldman , pero mi pregunta sigue sin respuesta: Dado que no se puede asignar una variable a una constante, necesito entonces convertir la variable en una constante literal para luego asignarla a la constante. ES decir, dado que no puedo hacer esto: variable = "string" const constante = variable ¿como convierto primero la variable en una constante literal? Lo mismo es una tontería lo que estoy diciendo pero tengo un caso práctico que no consigo hacer funcionar por este problema. |
| ||||
Pues es que no se puede, una constante es una constante, no adquiere ningun otro valor que el que le asignes, una constante no acepta una expresion como valor, o sea, se lo tienes que asignar directamente o trabajar con variables. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Este es un claro ejemplo de un post donde a mi ya no me queda duda de si se puede o no hacer lo que el que pregunta desea, sino en este caso ¿por qué alguien puede querer convertir una variable en constante? Quizá si responde, se verá que en el fondo del problema no se requiere esa operación como solución |
| ||||
Gracias por vuestras aclaraciones. Voy a aclarar yo ahora por qué quiero hacer lo que pido en este post. Estoy tratando de adaptar el siguiente ejemplo de 4guysfromrolla, en el que se puede ordenar en función de distintos parámetros (tamaño, nombre, etc) los archivos de una carpeta mostrados a través de un fso: http://www.4guysfromrolla.com/aspfaq....asp?FAQID=118 En la primera linea de código aparece ' Change the DIRECTORY to point to any virtual directory of your choice. CONST DIRECTORY = "/" ' relative path in virtual directories Lo que quiero hacer es asignar a CONST DIRECTORY el querystring de la página anterior, para así poder utilizar la misma página para mostrar distintos directorios según el querystring, ya digo. Pero como DIRECTORY es una constante, pues me da error cuando intento asignarle la variable. |
| ||||
No hay de otra, utiliza una variable, solo quitale el prefijo const y listo. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| |||
Si es así, tratala como variable y listo. No hace falta que la trates como una constante. Usa constantes cuando sepas que ese espacio en memoria mantendrá un único valor durante la ejecución, usa variables cuando su valor varie. Como en este caso la página anterior siempre va a variar, entonces usa una variable directory en lugar de la constante directory. Saludos!.
__________________ Add, never Remove |
| ||||
Pues lleváis razón , sólo quitando Const y convirtiéndolo así en variable, funciona igual. Al principio lo probé y fallaba, pero es que me estaba interfiriendo otra parte del código. Gracias a todos. |
| |||
Respuesta: convertir variable a const La pregunta no es tan errada ni tan disparatada. ¿Alguien es capaz de responder esta duda? Si bien la proposión inicial no puede ser llevada a cabo string MIvariable = "valor"; const string MIconstante = MIvariable; ¿Alguien sabe como asignar el valor que ACTUALMENTE tiene la variable MIvariable a MIconstante (paso de valores por refencia o valor) ? |
| ||||
Respuesta: convertir variable a const Así es, un valor constante siempre será constante, por lo tanto no puede recibir una variable. Saludos
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| |||
Respuesta: convertir variable a const Pero en el momento de CREAR la constante, nuestra variable tiene un valor concreto que luego vaya a cambiar es otro tema y tema que no nos interesa. Casteo, paso de valores o de alguna manera esto tiene que ser posible. ¿Peterpay tu que piensas? |
| ||||
Respuesta: convertir variable a const No es que opine yo, es la realidad por definición la constante se inicializa con un valor que no cambie, ni cambiara o por otra constante. pero parece mas como si quisieras crear una variable como en otros lenguajes que sea readonly que tome un valor inicial definido por el constructor y ya no sea modificada. |
| |||
Respuesta: convertir variable a const Esta pregunta me hice cuando intente encriptar la cadena de conexión de app.conf reflejada en Settings.Designer.cs Error 1: Un argumento de atributo debe ser una expresión constante, una expresión typeof o una expresión de creación de matrices de un tipo de parámetro de atributo
Código:
Si bien hay otros metodos para encriptar la cadena del archivo app.conf, este error me llamó la atención y de ahí vino la cuestión de querer pasar una variable a constante.string CADENA = Main.MetododeENCRIPTACIO("CadenaEncriptada"); [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] [global::System.Configuration.DefaultSettingValueAttribute(CADENA)] public string ConnectionString1{ get { return ((string)(this["ConnectionString1"])); } saludos. |
| ||||
Respuesta: convertir variable a const Consejo: al Leer los post de la gente que tiene mas ESTRELLITAS que uno, pongale atencion y traten de entender lo que estan diciendo. Ponganle un poco de neurona a la cosa. Si mal que mal programar no es juntar un codigo con otro codigo. (lo digo por que se pegaron en un bucle innecesariamente, aunque me entretuvo bastante) ![]() |