• Martes 13 de Abril de 2021, 00:31

Autor Tema:  Duda Codigo  (Leído 938 veces)

candasina

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Duda Codigo
« en: Sábado 8 de Septiembre de 2007, 21:26 »
0
Tengo el siguiente codigo, el cual pertenece a una funcion que me devuelve el ultimo idUsuario que se metio, o por el contrario tendre que crear el inicial.

Pero mi duda es: Si estoy haciendolo bien, porque el idUsuario es de la forma Pxxxx( ejemplo:P1001), inicialmente el numero debera empezar por 1 es decir, que si debo crear el usuario inicial seria P1000.


Código: Text
  1.  
  2.                string personal = "P";
  3.                 int num = 1001;
  4.                 string per = num.ToString();
  5.  
  6.                 personal.Insert(1, per);
  7.  
  8.  


Lo que hago aqui es juntar la P con 1001, pero no se si el insert lo estoy poniendo bien.

Muchas gracias por adelantado. Quizas la explicacion no se muy clara, me lio yo sola jejejjje :lol:

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Duda Codigo
« Respuesta #1 en: Domingo 9 de Septiembre de 2007, 05:00 »
0
peroo, te da algun error ???

Tal parece que esta bien, no lo he probau (y no recuerdo muy bien sus procedimientos).

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

candasina

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Duda Codigo
« Respuesta #2 en: Domingo 9 de Septiembre de 2007, 19:52 »
0
Todavia no lo he probado, pero me daba la impresion de que estaba mal. Estoy realizando un proyecto en grupo, y bueno cada uno hace su parte hasta que no las juntemos no se si esta bien :D

pero muchas axias por contestar

Scherzo

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
    • http://www.mma-spain.com
Re: Duda Codigo
« Respuesta #3 en: Lunes 10 de Septiembre de 2007, 13:56 »
0
Hola, en principio lo que tienes no te va a funcionar correctamente. No te va a dar error de compilación, pero no va a funcionar como esperas. La función .Insert() es un método que devuelve un valor, tal y como lo tienes va a hacer la inserción pero como el valor que devuelve no lo recoges con ninguna variables ni haces nada con él, simplemente se va a perder, y tu variable "personal" seguirá teniendo el mismo valor que antes del .Insert().

Para hacerlo de la forma que lo tienes tendrías que modificar la última línea por

Código: Text
  1.  
  2. personal = personal.Insert(1, per);
  3.  
  4.  

De esa forma, recoges sobre la misma variable "personal" el valor de la inserción.

Esto así sería correcto, pero el planteamiento creo que estaría más legible y más sencillo de esta otra forma:

Código: Text
  1.  
  2. string personal = "P";
  3. int num = 1001;
  4.  
  5. personal = personal + num.ToString();
  6.  
  7.  

Como ves, la sentencia queda más sencilla, sin necesidad de usar .Insert() ni una variable intermedia.

Esto es debido a que el operador "+" está sobrecargado y permite usarse para concatenar cadenas de texto. Incluso si quieres puedes ahorrarte el .ToString() de la variable "num" ya que hace conversión implítica del integer a string, aunque si lo dejas queda más clara tu intención.

Y comó último consejo, te recomendaría que para este caso usaras un StringBuilder en lugar de un string, ya que si usas string cada vez que realices una concatenación se genera un nuevo objeto string, por lo que si haces muchas concatenaciones estás consumiendo tiempo en la creación/destrucción de múltiples objetos string, mientras que un StringBuilder, con su método .Append(), permite concatenar sobre un mismo objeto tanto texto como se quiera, lo que es más óptimo ya que no tienes que estar creando/destruyendo objetos a cada concatenación.

Esto último es una recomendación, pero usando strings también te funcionará.

Espero haberte sido de ayuda.

Saludos