using System; using System.Globalization; using Developpez.Dotnet.Properties; namespace Developpez.Dotnet { /// /// Fournit des méthodes pour travailler avec des nombres. /// public static partial class Numbers { /// /// Tente de convertir une chaine de caractères vers le type spécifié. /// /// Type de destination /// Chaine à convertir /// Un nombre du type spécifié si la conversion réussit; sinon, null. public static T? TryParse(this string s) where T : struct { Delegate d; if (_parsers.TryGetValue(typeof(T), out d)) { var f = (Func) d; return f(s); } throw new NotSupportedException(ExceptionMessages.OnlyNumericTypesAreSupported); } /// /// Tente de convertir une chaine de caractères vers le type spécifié. /// /// Type de destination /// Chaine à convertir /// Une combinaison de valeurs indiquant le format autorisé de s. /// qui fournit des informations de format propres à la culture concernant s. /// Un nombre du type spécifié si la conversion réussit; sinon, null. public static T? TryParse(this string s, NumberStyles style, IFormatProvider provider) where T : struct { Delegate d; if (_parsersWithStyleAndProvider.TryGetValue(typeof(T), out d)) { var f = (Func)d; return f(s, style, provider); } throw new NotSupportedException(ExceptionMessages.OnlyNumericTypesAreSupported); } } }