Jak zjistit číslo prvku v poli?   otázka

VB.NET

Dobrý den

Mám pole struktur, ve struktuře metodu, která pracuje se svým číslem prvku pole.

Má metoda nějakou šanci zjistit své číslo prvku v daném poli?

Friend Structure x
        Friend neco As String
        Private PoziceVpoli As Integer 'jak zjistím?
        Friend Sub UdelamNeco()
        ' tady použiji proměnnou PoziceVPoli, která by měla nabývat hodnoty pořadí v poli (10)
        End Sub
    End Structure

    Private xx(20) As x
    Private Sub xxx()
        xx(10).UdelamNeco()
    End Sub

Nechci to dělat takhle

Friend Structure x
        Friend neco As String
        Friend Sub UdelamNeco(PoziceVpoli)
            ' tady použiji proměnnou PoziceVPoli
        End Sub
    End Structure

    Private xx(20) As x
    Private Sub xxx()
        xx(10).UdelamNeco(10)
    End Sub

Díky za pomoc

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vypadá, že budeš potřebovat nějakou kolekci, všimni si Default Property Item :

http://www.java2s.com/Code/VB/Language-B...

Případně lze použít List a pozice pomocí IndexOf nebo Dictionary ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokus o strukturu StructureArrayItem v arraylistu StructuresArrayItems

Užití :

        Dim array_names() As String = {"1st", "2nd", "3rd", "fourth"}
        Dim ArrayStructures As New StructuresArrayItems
        For Each n As String In array_names
            ArrayStructures.Add(New StructuresArrayItems.StructureArrayItem(n))
        Next
        'For i As Integer = 0 To ArrayStructures.Count - 1
        '    Debug.Print(ArrayStructures(i).ToString)
        'Next
        'For Each sai As StructuresArrayItems.StructureArrayItem In ArrayStructures
        '    Debug.Print(sai.ToString)
        'Next
        Dim b As Boolean
        b = ArrayStructures(ArrayStructures.Count - 1).StartsWithNumber
        Debug.Print("Last StructureArrayItem In StructuresArrayItems " _
                    & IIf(b, "starts", "not starts") & " with number.")

        Dim sai_4th As New StructuresArrayItems.StructureArrayItem With {.Name = "4th"}
        ArrayStructures(3) = sai_4th
        b = ArrayStructures(3).StartsWithNumber
        Debug.Print("Last StructureArrayItem In StructuresArrayItems " _
                            & IIf(b, "starts", "not starts") & " with number.")

StructuresArrayItems a StructureArrayItem :

Public Class StructuresArrayItems
    Inherits ArrayList

    Private Shared _parent As StructuresArrayItems
    Public Sub New()
        _parent = Me
    End Sub

    Default Public Shadows Property Item(ByVal index As Integer) As StructureArrayItem
        Get
            Return MyBase.Item(index)
        End Get
        Set(ByVal value As StructureArrayItem)
            MyBase.Item(index) = value
        End Set
    End Property

    Public Structure StructureArrayItem
        Public Sub New(ByVal value As String)
            _name = value
        End Sub
        Private _name As String
        Public Property Name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property


        Public ReadOnly Property Parent As StructuresArrayItems
            Get
                Return _parent
            End Get
        End Property
        Public ReadOnly Property Index As Integer
            Get
                Return _parent.IndexOf(Me)
            End Get
        End Property

        Public Function StartsWithNumber() As Boolean
            Return Char.IsNumber(_name, 0)
        End Function

        Public Overrides Function ToString() As String
            Return String.Format("StructureArrayItem([Index:={0} Name:='{1}' StartsWithNumber:={2}]", Me.Index, _name, StartsWithNumber)
        End Function

    End Structure
End Class
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokus o strukturu StructuresListItem v listu StructuresListItems(Of StructureListItem)

Užití:

        Dim ListStructures As New StructuresListItems
        array_names(array_names.Length - 1) = "4th"
        For Each n As String In array_names
            ListStructures.Add(New StructureListItem(n))
        Next
        'For i As Integer = 0 To ListStructures.Count - 1
        '    Debug.Print(ListStructures(i).ToString)
        'Next
        'For Each sli As StructureListItem In ListStructures
        '    Debug.Print(sli.ToString)
        'Next
        b = ListStructures(ListStructures.Count - 1).StartsWithNumber
        Debug.Print("Last StructuresListItem In StructuresListItems " _
                    & IIf(b, "starts", "not starts") & " with number.")

StructureListItem:

Public Structure StructureListItem
    Public Sub New(ByVal value As String)
        _name = value
    End Sub
    Private _name As String
    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Friend _parent As Object
    Public ReadOnly Property Parent As StructuresListItems
        Get
            Return _parent
        End Get
    End Property

    Public ReadOnly Property Index As Integer
        Get
            Return _parent.IndexOf(Me)
        End Get
    End Property

    Public Function StartsWithNumber() As Boolean
        Return Char.IsNumber(_name, 0)
    End Function


    Public Overrides Function ToString() As String
        Return String.Format("StructureListItem([Index:={0} Name:='{1}' StartsWithNumber:={2}]", Me.Index, _name, StartsWithNumber)
    End Function

End Structure

StructuresListItems:

Public Class StructuresListItems
    Inherits List(Of StructureListItem)

    Public Shadows Sub Add(ByVal item As StructureListItem)
        item._parent = Me
        MyBase.Add(item)
    End Sub

    Default Public Shadows ReadOnly Property Item(ByVal index As Integer) As StructureListItem
        Get
            Return MyBase.Item(index)
        End Get
    End Property
End Class
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokus o strukturu StructuresListItem v listu StructuresListItems(Of StructureListItem)

Užití:

        Dim ListStructures As New StructuresListItems
        array_names(array_names.Length - 1) = "4th"
        For Each n As String In array_names
            ListStructures.Add(New StructureListItem(n))
        Next
        'For i As Integer = 0 To ListStructures.Count - 1
        '    Debug.Print(ListStructures(i).ToString)
        'Next
        'For Each sli As StructureListItem In ListStructures
        '    Debug.Print(sli.ToString)
        'Next
        b = ListStructures(ListStructures.Count - 1).StartsWithNumber
        Debug.Print("Last StructuresListItem In StructuresListItems " _
                    & IIf(b, "starts", "not starts") & " with number.")

StructureListItem:

Public Structure StructureListItem
    Public Sub New(ByVal value As String)
        _name = value
    End Sub
    Private _name As String
    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Friend _parent As Object
    Public ReadOnly Property Parent As StructuresListItems
        Get
            Return _parent
        End Get
    End Property

    Public ReadOnly Property Index As Integer
        Get
            Return _parent.IndexOf(Me)
        End Get
    End Property

    Public Function StartsWithNumber() As Boolean
        Return Char.IsNumber(_name, 0)
    End Function


    Public Overrides Function ToString() As String
        Return String.Format("StructureListItem([Index:={0} Name:='{1}' StartsWithNumber:={2}]", Me.Index, _name, StartsWithNumber)
    End Function

End Structure

StructuresListItems:

Public Class StructuresListItems
    Inherits List(Of StructureListItem)

    Public Shadows Sub Add(ByVal item As StructureListItem)
        item._parent = Me
        MyBase.Add(item)
    End Sub

    Default Public Shadows ReadOnly Property Item(ByVal index As Integer) As StructureListItem
        Get
            Return MyBase.Item(index)
        End Get
    End Property
End Class
nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback