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
personal = personal.Insert(1, per);
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:
string personal = "P";
int num = 1001;
personal = personal + num.ToString();
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