C# 7.0 – Specification – Local Functions
Una de las características añadidas a C# 7.0 y que quizás mayor discusión tiene, es la que se denomina como Local Functions o funciones locales.
Si bien hay muchos programadores que ven con buenos ojos esta característica, también hay muchos otros a los que no les gusta, pero nuestro propósito aquí y en este momento no es discutir esto, sino en qué consiste y como se utiliza.
La idea de Local Functions es que podamos declarar una función dentro de otra.
Esto es especialmente útil cuando un método o función necesita de otra a la que podríamos denominar como helper, y que dicho helper, sólo tendrá relación con la función que la llama.
Un ejemplo de esta característica escrita en C# 7.0 quedaría así:
private static void LocalFunctions() { GetURLFriendly("Esto es una pasada. La versión 2.0, es muy interesante"); } private static void GetURLFriendly(string title) { Console.WriteLine(title); Console.WriteLine(ConvertToUrlFriendly(title)); string ConvertToUrlFriendly(string text) { var slugCharacter = "-"; var normalizedString = text.Normalize(NormalizationForm.FormD); var stringBuilder = new StringBuilder(); foreach (var character in normalizedString) { var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(character); if (unicodeCategory != UnicodeCategory.NonSpacingMark) { stringBuilder.Append(character); } } var result = stringBuilder.ToString().Normalize(NormalizationForm.FormC); var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(result); return Regex.Replace(Regex.Replace(Encoding.ASCII.GetString(bytes), @"\s{2,}|[^\w]", " ", RegexOptions.ECMAScript).Trim(), @"\s+", slugCharacter.ToString()).ToLowerInvariant(); } }
¡Happy Coding!