public static class StringExtensions{ extension(string) { public static string operator |(string left, string right) { return $"{left} | {right}"; } }}
Lo interesante no es el ejemplo en sí, sino las posibilidades que habilita.
Una idea que me resulta interesante es combinar esta característica con un enum para construir una API tipo pipe conversion (o el nombre que termine teniendo).
La implementación sería tan simple como sobrecargar el operador para recibir el enum:
CSHARP
extension(string){ public static string operator |(string value, FormatAs format) { return format switch { FormatAs.MD5 => ..., FormatAs.Sha256 => ..., FormatAs.Base64 => ..., _ => throw new ArgumentOutOfRangeException() }; }}
No digo que este sea el mejor uso para la característica, pero sí me parece un buen ejemplo de cómo los operadores de extensión permiten construir APIs mucho más expresivas sobre tipos existentes, sin necesidad de wrappers ni métodos de extensión encadenados.