У меня есть класс, представляющий единицу измерения с Decimal
в качестве числа. Просто для упрощения этого примера, скажем, я представляю сантиметры. Я хотел бы реализовать метод ToString () для этого класса. Дело в том, что если числовое значение представляет собой целое число, я хотел бы просто отобразить десятичное число в виде целого числа. В противном случае, я хотел бы сохранить это как десятичную. Так, например, 10,5D сантиметров будут отображаться как «10,5 см», а 7,0D сантиметров должны отображаться как «7 см». Я хотел бы, чтобы это было быстро и просто читать. У меня есть рабочее решение, но, похоже, должен быть лучший способ.
Вот надуманный пример, показывающий мою первую трещину:
Public Property Units As String = "cm"
Public Property NumericValue As Decimal = 10.5D
Public Overrides Function ToString()
Dim num As String = If(Me.NumericValue = Decimal.Ceiling(Me.NumericValue), _
Decimal.ToInt32(Me.NumericValue).ToString(), _
Me.NumericValue.ToString())
Return num + Me.Units
End Function
Мне немного неудобно с Me.NumericValue = Decimal.Ceiling(Me.NumericValue)
. Есть мысли о том, как сделать это лучше? Есть ли что-то, что я мог бы сделать с String.Format или каким-либо другим методом в классе Decimal, который мог бы сделать это более понятным и сохранить его производительность?