sirve que polimorfico para metodos metodo llamar invocar extension ejemplos ejemplo constructores c# string extension-methods trimming

polimorfico - para que sirve el constructor en c#



¿Cómo extender los tipos incorporados de C#, como String? (5)

¿Es posible? Sí, pero solo con un método de extensión

La clase System.String está sellada por lo que no puede usar anulación o herencia.

public static class MyStringExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"/s+", " "); } } // usage: string s = "test !"; s = s.ConvertWhitespacesToSingleSpaces();

Saludos a todos ... Necesito Trim una String . Pero quiero eliminar todos los espacios en blanco repetidos dentro de la Cadena en sí, no solo al final o al comienzo de la misma. Podría hacerlo con un método como:

public static string ConvertWhitespacesToSingleSpaces(string value) { value = Regex.Replace(value, @"/s+", " "); }

Que obtuve de here . Pero quiero que se llame a este fragmento de código dentro de String.Trim() , así que creo que necesito extender o sobrecargar o anular el método Trim ... ¿Hay alguna manera de hacerlo?

Gracias por adelantado.


Además de usar métodos de extensión, probablemente un buen candidato aquí, también es posible "envolver" un objeto (por ejemplo, "composición de objetos"). Siempre que el formulario envuelto no contenga más información que la que se envuelve, el elemento envuelto puede pasarse limpiamente a través de conversiones implícitas o explícitas sin pérdida de información: solo un cambio de tipo / interfaz.

Feliz codificación.


Como no puede extender string.Trim (). Puede hacer un método de extensión como se describe here que recorta y reduce el espacio en blanco.

namespace CustomExtensions { //Extension methods must be defined in a static class public static class StringExtension { // This is the extension method. // The first parameter takes the "this" modifier // and specifies the type for which the method is defined. public static string TrimAndReduce(this string str) { return ConvertWhitespacesToSingleSpaces(str).Trim(); } public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"/s+", " "); } } }

Puedes usarlo así

using CustomExtensions; string text = " I''m wearing the cheese. It isn''t wearing me! "; text = text.TrimAndReduce();

Te dio

text = "I''m wearing the cheese. It isn''t wearing me!";


Hay un sí y un no a su pregunta.

Sí, puede ampliar los tipos existentes utilizando métodos de extensión. Los métodos de extensión, naturalmente, solo pueden acceder a la interfaz pública del tipo.

public static string ConvertWhitespacesToSingleSpaces(this string value) {...} // some time later... "hello world".ConvertWhitespacesToSingleSpaces()

No, no puedes llamar a este método Trim (). Los métodos de extensión no participan en la sobrecarga. Creo que un compilador incluso debería darle un mensaje de error detallando esto.

Los métodos de extensión solo son visibles si el espacio de nombres que contiene el tipo que define el método está siendo utilizado.


Métodos de extensión!

public static class MyExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"/s+", " "); } }