Click here to Skip to main content
12,821,315 members (31,135 online)

.NET Framework

 
Question[VB.NET 2008] Compact Framework: how to start a single instance of an application Pin
steve_949661325-Feb-13 0:28
membersteve_949661325-Feb-13 0:28 
AnswerRe: [VB.NET 2008] Compact Framework: how to start a single instance of an application Pin
Eddy Vluggen25-Feb-13 9:10
mvpEddy Vluggen25-Feb-13 9:10 
GeneralRe: [VB.NET 2008] Compact Framework: how to start a single instance of an application Pin
steve_949661326-Feb-13 0:44
membersteve_949661326-Feb-13 0:44 
GeneralRe: [VB.NET 2008] Compact Framework: how to start a single instance of an application Pin
Eddy Vluggen26-Feb-13 1:33
mvpEddy Vluggen26-Feb-13 1:33 
QuestionEvent Handling between Threads Pin
AeroClassics19-Feb-13 12:37
memberAeroClassics19-Feb-13 12:37 
AnswerRe: Event Handling between Threads Pin
Gerry Schmitz19-Feb-13 20:25
memberGerry Schmitz19-Feb-13 20:25 
GeneralRe: Event Handling between Threads Pin
AeroClassics20-Feb-13 5:45
memberAeroClassics20-Feb-13 5:45 
QuestionWays of implenting IEnumerable in VB Pin
Mike-MadBadger19-Feb-13 12:10
memberMike-MadBadger19-Feb-13 12:10 
OK, I cannot get my head around the whether there is a difference between the 'classic' (perhaps long winded) way of doing it, multiple classes and the 'new' Yield route to (apparently) the same end.

I can understand the classic route (I think), see the code below.
Yield confuses the heck out of me, if I understand it correctly then it's absolutely genius, I get the idea of a state machine (I think) and logically it sort of makes sense but I am not at all confident.

Can it possibly be this simple? You just make that one method as simple or complex as necessary for your situation?
(Warning, silly example since arrays can already be enumerated, but it's easy to demo)
Public Class YieldExample
    Implements IEnumerable

    Private _Thing As Double()

    Public Iterator Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
        If IsNothing(Me._Thing) Then
            Throw New InvalidOperationException()
        End If

        For Index As Integer = 0 To Me._Thing.GetUpperBound(0)
            Yield Me._Thing(Index)
        Next
    End Function

End Class

What I understand to be the 'old way'.
Public Class ExampleEnumerable
    Implements IEnumerable(Of Double)

    Private _Thing As Double()

    Public Function GetEnumerator() As IEnumerator(Of Double) Implements IEnumerable(Of Double).GetEnumerator
        Return New ExampleEnumerator(Me._Thing)
    End Function

    Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator
        Return Me.GetEnumerator
    End Function
End Class



Public Class ExampleEnumerator
    Implements IEnumerator(Of Double)

    Private _Thing As Double()
    Private _Index As Integer
    Private _curItem As Double

    Public Sub New(ByVal Thing As Double())
        Me._Thing = Thing
        Me._Index = -1
        Me._curItem = Nothing
    End Sub

    Public ReadOnly Property Current As Double Implements IEnumerator(Of Double).Current
        Get
            If IsNothing(Me._curItem) Then
                Throw New InvalidOperationException()
            End If
            Return Me._curItem
        End Get
    End Property

    Public ReadOnly Property Current1 As Object Implements IEnumerator.Current
        Get
            Return Me.Current
        End Get
    End Property

    Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
        'If we are already at the end then return false
        If Me._Index = Me._Thing.GetUpperBound(0) Then
            Return False
        End If
        'Otherwise move to the next position in the array
        Me._Index += 1
        Me._curItem = Me._Thing(Me._Index)
        Return True
    End Function

    Public Sub Reset() Implements IEnumerator.Reset
        Me._Index = -1
        Me._curItem = Nothing
    End Sub

    #Region "IDisposable Support"
 
End Class

Thanks,
Mike
AnswerRe: Ways of implenting IEnumerable in VB Pin
MicroVirus13-Mar-13 12:56
memberMicroVirus13-Mar-13 12:56 
GeneralRe: Ways of implenting IEnumerable in VB Pin
Mike-MadBadger13-Mar-13 22:44
memberMike-MadBadger13-Mar-13 22:44 
Questionhow to manage exicution code Pin
nanhesab18-Feb-13 1:58
membernanhesab18-Feb-13 1:58 
AnswerRe: how to manage exicution code Pin
Eddy Vluggen18-Feb-13 2:01
mvpEddy Vluggen18-Feb-13 2:01 
AnswerRe: how to manage exicution code Pin
Super Lloyd18-Feb-13 2:33
memberSuper Lloyd18-Feb-13 2:33 
AnswerRe: how to manage exicution code Pin
Sandeep Mewara18-Feb-13 4:13
mvpSandeep Mewara18-Feb-13 4:13 
Questionharvesting social images for bi concept image search Pin
krish888817-Feb-13 17:32
memberkrish888817-Feb-13 17:32 
AnswerRe: harvesting social images for bi concept image search Pin
N a v a n e e t h17-Feb-13 18:13
memberN a v a n e e t h17-Feb-13 18:13 
AnswerRe: harvesting social images for bi concept image search Pin
Sandeep Mewara17-Feb-13 19:24
mvpSandeep Mewara17-Feb-13 19:24 
AnswerRe: harvesting social images for bi concept image search Pin
Abhinav S19-Feb-13 1:08
mvpAbhinav S19-Feb-13 1:08 
AnswerRe: harvesting social images for bi concept image search Pin
Dave Kreskowiak19-Feb-13 2:45
mvpDave Kreskowiak19-Feb-13 2:45 
QuestionWhere to get Regasm and Gacutil? Pin
cjb11015-Feb-13 1:54
membercjb11015-Feb-13 1:54 
AnswerRe: Where to get Regasm and Gacutil? Pin
Richard Deeming15-Feb-13 2:01
memberRichard Deeming15-Feb-13 2:01 
GeneralRe: Where to get Regasm and Gacutil? Pin
cjb11015-Feb-13 3:55
membercjb11015-Feb-13 3:55 
AnswerRe: Where to get Regasm and Gacutil? Pin
Dave Kreskowiak15-Feb-13 3:12
mvpDave Kreskowiak15-Feb-13 3:12 
GeneralRe: Where to get Regasm and Gacutil? Pin
cjb11015-Feb-13 3:48
membercjb11015-Feb-13 3:48 
QuestionWeb development using C++ Pin
AseelHadlaq15-Feb-13 0:04
memberAseelHadlaq15-Feb-13 0:04 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web01 | 2.8.170308.1 | Last Updated 15 Mar 2017
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid