Foros del Web » Programación para mayores de 30 ;) » .NET »

Confusión del compilador al sobrecargar char e Integer

Estas en el tema de Confusión del compilador al sobrecargar char e Integer en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/10/2010, 16:09
 
Fecha de Ingreso: septiembre-2003
Ubicación: London
Mensajes: 162
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta Confusión del compilador al sobrecargar char e Integer

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.
__________________
Mi Blog

Etiquetas: char, compilador, integer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:59.