string.this[int] me dice que es de sólo escritura :s

Iniciado por quiqueroal, 28 Abril 2011, 10:41 AM

0 Miembros y 1 Visitante están viendo este tema.

quiqueroal

Hola compañeros. A ver cuento, soy nuevo en POO y por lo tanto en C# tambien.
Con lo que he encontrado un problema en parte de una aplicación y es que intentando copiar parte de un string en otro me dice que el string destino es de sólo escritura.. y lo que hago es lo siguiente. Este es el código del método:

Código (csharp) [Seleccionar]
public int MaxID(string tableName)
{
string IDname = "";
DB EcnaDB = new DB();
string Info = String.Empty;

for (int i = 0; i < tableName.Length - 1; i++)
{
if (tableName[i] == '.')
{
for (int j = i, k = 0; j < tableName.Length - 1; j++, k++)
{
IDname[k] = tableName[j]; //aqui me da el error//
}
}
}

Cmd = "select ID" + IDname + " from dbo." + tableName + " where Nombre = 'Contador'";
using (SqlConnection conn = EcnaDB.OpenConnection(Server))
{
SqlDataReader reader = EcnaDB.ReadDB(Cmd, conn);
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Info += reader.GetValue(i).ToString();
}
}
}
return Int32.Parse(Info);
}


En el for más anidado donde pongo el comentario //aqui me da el error// me suelta lo siguiente:

Error 1 No se puede asignar la propiedad o el indizador 'string.this[int]' (es de sólo lectura)

Espero que puedan ayudarme porque es de las tipicas tonterias que uno hace y no es capaz de darse cuenta y desquician bastante... ¬¬
Un saludo y gracias!

Novlucker

Lo que ocurre es que si bien puedes acceder a los caracteres de un String como si se tratase de un array, no puedes asignar sus valores del mismo modo, y es lo que intentas hacer con el IDname[k]

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

quiqueroal

aaa vaaale ok! muchisimas gracias! es que estoy acostumbrado a C y pense que aqui era igual... y de que modo podría hacer esto? porque es algo que claramente hay que hacer a mano, dado que lo que pretendo es quitar unos caracteres que hay al inicio de una palabra, y me temo que la clase string no ofrece ningún método que haga esto..
muchas gracias!

Novlucker

#3
IndexOf junto a Substring o Remove sería lo mejor para no recorrer caracter a caracter como lo estas haciendo :P
Sino puedes hacer uso de Stringbuilder, o simplemente concatenar caracteres :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

quiqueroal

Ok! muchisimas gracias por la informacion! voy a probar y ya cuento como ha salido!
muchas gracias en serio! un saludo! :) :)

quiqueroal

perfecto! ya lo he conseguido!  ;-)  ;-) muchas gracias, porque andaba pillado y confundido por el clásico C... en serio muchas gracias! un saludo!  :D

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein