[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
В C# вы можете использовать метод TryParse для разбора строки в параметр общего типа. Однако, поскольку TryParse является статическим методом встроенных типов, таких как int, double и т.д., его нельзя использовать непосредственно с параметрами общих типов.
Одно из решений — использовать ограничение типа, чтобы убедиться, что параметр общего типа T является ссылочным типом и реализует интерфейс IConvertible.
Интерфейс IConvertible определяет методы преобразования значения в различные распространенные типы, включая строку, и обратно. Затем вы можете использовать метод Convert.ChangeType() для преобразования разобранного значения к типу T.
Вот пример реализации общего метода TryParse, использующего эти приемы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; public static class GenericParser { public static bool TryParse<T>(string s, out T result) where T : class, IConvertible { result = null; try { object parsedValue = Convert.ChangeType(s, typeof(T)); result = (T)parsedValue; return true; } catch (Exception) { return false; } } } |
В этом примере метод TryParse принимает строку s и выходной параметр result типа T. Ограничение where T : class, IConvertible гарантирует, что T является ссылочным типом и реализует интерфейс IConvertible.
Внутри метода используется метод Convert.ChangeType для преобразования разобранного значения к типу T. Если преобразование прошло успешно, разобранное значение присваивается параметру result, и метод возвращает true. В противном случае метод возвращает false.
Вот пример использования метода GenericParser.TryParse для разбора строки в параметр универсального типа:
1 2 3 4 5 6 7 8 9 |
string s = "123"; if (GenericParser.TryParse<int>(s, out int result)) { Console.WriteLine($"Parsed value: {result}"); } else { Console.WriteLine("Failed to parse"); } |