Se que esto no resuelve tu problema, pero será una buena lección;
Esto me ha parecido muy mejorable:
public Persona(int c)
{
if (c < 10)
codigo = "PER-0000";
if (c >= 10 && c < 100)
codigo = "PER-000";
if (c >= 100 && c < 1000)
codigo = "PER-00";
if (c >= 1000)
codigo = "PER-0";
codigo = codigo + c;
}
¿que te parece algo parecido a esto? ten en cuenta que yo no programo C# y he escrito esto sin corrector, te digo porque puede tener algún error, pero creo que se entiende la idea. Transformo el número a texto y le añado un "0" delante mientras su longitud (determinada por el número de caracteres) sea menor que 5.
public Persona(int c)
{
string tmp = c.tostring;
while (tmp.count < 5)
{
tmp="0" + tmp;
}
codigo = "PER-"+tmp;
}