📄 money.vb
字号:
' ****************************************************************
' This is free software licensed under the NUnit license. You
' may obtain a copy of the license as well as information regarding
' copyright ownership at http://nunit.org/?p=license&r=2.4.
' ****************************************************************
Option Explicit On
Namespace NUnit.Samples
' A Simple Money.
Public Class Money
Implements IMoney
Private fAmount As Int32
Private fCurrency As String
' Constructs a money from a given amount and currency.
Public Sub New(ByVal amount As Int32, ByVal currency As String)
Me.fAmount = amount
Me.fCurrency = currency
End Sub
' Adds a money to this money. Forwards the request
' to the AddMoney helper.
Public Overloads Function Add(ByVal m As IMoney) As IMoney Implements IMoney.Add
Return m.AddMoney(Me)
End Function
Public Overloads Function AddMoney(ByVal m As Money) As IMoney Implements IMoney.AddMoney
If m.Currency.Equals(Currency) Then
Return New Money(Amount + m.Amount, Currency)
End If
Return New MoneyBag(Me, m)
End Function
Public Function AddMoneyBag(ByVal s As MoneyBag) As IMoney Implements IMoney.AddMoneyBag
Return s.AddMoney(Me)
End Function
Public ReadOnly Property Amount()
Get
Return fAmount
End Get
End Property
Public ReadOnly Property Currency()
Get
Return fCurrency
End Get
End Property
Public Overloads Overrides Function Equals(ByVal anObject As Object) As Boolean
If IsZero And TypeOf anObject Is IMoney Then
Dim aMoney As IMoney = anObject
Return aMoney.IsZero
End If
If TypeOf anObject Is Money Then
Dim aMoney As Money = anObject
If (IsZero) Then
Return aMoney.IsZero
End If
Return Currency.Equals(aMoney.Currency) And Amount.Equals(aMoney.Amount)
End If
Return False
End Function
Public Overrides Function GetHashCode() As Int32
Return fCurrency.GetHashCode() + fAmount
End Function
Public ReadOnly Property IsZero() As Boolean Implements IMoney.IsZero
Get
Return Amount.Equals(0)
End Get
End Property
Public Function Multiply(ByVal factor As Integer) As IMoney Implements IMoney.Multiply
Return New Money(Amount * factor, Currency)
End Function
Public Function Negate() As IMoney Implements IMoney.Negate
Return New Money(-Amount, Currency)
End Function
Public Function Subtract(ByVal m As IMoney) As IMoney Implements IMoney.Subtract
Return Add(m.Negate())
End Function
Public Overrides Function ToString() As String
Return String.Format("[{0} {1}]", Amount, Currency)
End Function
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -