Let's discuss where VB is going and interact with some of those that are making it happen!
I hope VB and C# allow for each to handle this so we don't have to make the code that unnecessary verbose!
Class StackPanel2
Inherits StackPanel
Public Overloads Property Children As UIElementCollection
Get
Return MyBase.Children
End Get
Set(value As UIElementCollection)
MyBase.Children.Clear()
For Each child In value
MyBase.Children.Add(child)
Next
End Set
End Property
End Class
To test to see if a value is within a range of numbers, we can use a simple expression like min <= value and value <= max
.
Is there an equivalent expression to test if a value is within a range that uses a stepping.
I think the following function would suffice, for ascending range. Not too sure about descending ranges.
<extension>
function IsBewteen( value As Integer, min As Integer, max As Integer, stepping As Integer) As Boolean
If min <= max Then
If stepping <= 0 Then Throw New ArgumentOutOfRangeException(NameOf(stepping), "Must have a non-zero positive value.")
Return ((min <= value) And (value <= max)) AndAlso ( (value Mod stepping) = (min Mod stepping) )
Else
If stepping >=0 Then Throw New ArgumentOutOfRangeException(NameOf(stepping), "Must have a non-zero negative value.")
Return value.IsBewteen(max, min, -stepping)
End IF
End Function
There is still an issue around the Integer.MinValue
and Integer.MaxValue
, any suggestion on how to manage them with out resorting to enclosing it in a try ... catch
block?
IsBewteen
?
I want to fairly efficiently to check if a value, is within two bounds but that range isn't continuous but has a regular stepping.
start := 0, finish := 10, stepping:= 2' If
value:=2then return true. If
value=7` return false.
The following works, assuming we if pass in arguments that satisfies the for loop conditions.
Function IsBetween(value as Integer, start As Integer, finish As Integer, stepping As Integer ) As Boolean
For index = start To finish Step stepping
If index = value Then Return True
Next
Return False
End Function
But it is rather inefficient, since we could check if a value is within some bounds simply using Math.Min(start, finish) <= value and value<=Math.Max(start, finish)
. But this doesn't take into account a stepping. My question is, "Is there an efficient way to do that?"
(value - start) % step == 0
?