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:
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".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; } }
É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:
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 =Pstring userName = "laura"; char letter = 'u'; userName = userName.Remove(letter);
¿Alguien sabe porqué sucede esto en .Net y cómo poner solución?
Gracias por adelantado.