Buenas,
Tengo un problema al realizar sobrecargas con el que ya me había topado en el pasado pero he decidido buscar ahora porqué sucede y de momento no he tenido éxito.
Haciendo pruebecillas y chorradas mías me ha dado por realizar un método extendido para la clase String en C# que es el siguiente:
Código:
public static string Remove(this String str, Char letter)
{
if (str.IndexOf(letter) >= 0)
{
return str.Substring(0, str.IndexOf(letter) + 1);
}
else
{
return str;
}
}
Es una sobrecarga del método existente Remove que en vez de darle la posición le damos una letra y debe eliminar a partir de esa letra. El problema es que al existir una sobrecarga en la que se le pasa un integer y elimina a partir de esa posición recibo el error "startIndex must be less than length of string. Parameter name: startIndex".
Éste error se produce porque al debugar se confunde y no sabe si estoy llamando a la sobrecarga que pide un Integer o a la que te pide un Char. Deduzco que el problema viene porque el Char y el Integer son muy parecidos, pero claro no son lo mismo. He intentado incluso crear una variable del tipo Char a ver si así... pero nada. Aquí muestro cómo hago la llamada:
Código:
string userName = "laura";
char letter = 'u';
userName = userName.Remove(letter);
Puedo hacer que el parámetro en vez de char sea string y entonces sí funciona, pero claro, eso se prestaría a confusiones. También puedo añadir un parámetro fantasma que no hace nada pero permite diferenciar la sobrecarga, pero podría ser confuso y es código basura. O incluso podría crear otro método y no hacer sobrecarga, pero eso no resuelve mi duda =P
¿Alguien sabe porqué sucede esto en .Net y cómo poner solución?
Gracias por adelantado.