Я хочу, чтобы строка была децимальной ?. Со ссылкой на предыдущий вопрос hereВставить строку в десятичную? (с нулевым числом) по методу расширения
один из ответов дал расширение объекта для преобразования объектов, как так
public static class ObjectExtensions
{
public static Nullable<T> ToNullable<T>(this object input)
where T : struct
{
if (input == null)
return null;
if (input is Nullable<T> || input is T)
return (Nullable<T>)input;
throw new InvalidCastException();
}
}
использование:
object value = 123.45m;
decimal? dec = value.ToNullable<decimal>();
выше не работает со строкой однако, можно определить компаньон к указанному выше методу, чтобы конкретно обрабатывать строки?
определенно нравится то, что я хотел бы быть в состоянии сделать это: -
object v1 = 123.45m;
decimal? d1 = v1.ToNullable<decimal>();
object v2 = "123.45";
decimal? d2 = v2.ToNullable<decimal>();
Что это значит, что он не работает со строкой? , строка является ссылочным типом, она не является структурой. – Habib
Я думаю, может быть, они хотят передать строку в качестве ввода и вывести ее «decimal»? Итак: 'string value =" 123.45 "; десятичная дробь? dec = value.ToNullable(); '? EDIT: Конечно, если это так, на данный момент вы не можете просто бросить. Вам нужно будет вызывать 'Decimal.Parse' или некоторый эквивалент для преобразования. –
Лучше использовать Decimal.Parse или Decimal.TryParse для синтаксического анализа строки. Таким образом, любой, кто читает ваш код, точно знает, какие стили культуры и числа вы хотите принять, не обращая внимания на собственный метод расширения. – Joe