VB.Net/Language Basics/Structure — различия между версиями

Материал из VB Эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Версия 16:40, 26 мая 2010

Compare Structure and Class

Imports System
Public Class MainClass
    
    Shared Sub Main(ByVal args As String())
        Dim cperson1 As New ClassPerson
        Dim cperson2 As ClassPerson
        cperson1.FirstName = "A"
        cperson2 = cperson1
        cperson2.FirstName = "B"
        Console.WriteLine(cperson1.FirstName & ", " & cperson2.FirstName)
        Dim sperson1 As New StructurePerson
        Dim sperson2 As StructurePerson
        sperson1.FirstName = "A"
        sperson2 = sperson1
        sperson2.FirstName = "B"
        Console.WriteLine(sperson1.FirstName & ", " & sperson2.FirstName)
    End Sub
End Class
  
Public Class ClassPerson
    Public FirstName As String
    Public LastName As String
End Class
Public Structure StructurePerson
    Public FirstName As String
    Public LastName As String
End Structure


Pass Structure into a Function

Imports System
Public Class MainClass
    Shared Sub Main(ByVal args As String())
        " create an instance of the structure
        Dim loc1 As New Location(200, 300)
        " display the values in the structure
        Console.WriteLine("Loc1 location: {0}", loc1)
        " invoke the default constructor
        Dim loc2 As New Location( )
        Console.WriteLine("Loc2 location: {0}", loc2)
        " pass the structure to a method
        myFunc(loc1)
        " redisplay the values in the structure
        Console.WriteLine("Loc1 location: {0}", loc1)
    End Sub
         " method takes a structure as a parameter
    Shared Public Sub myFunc(ByVal loc As Location)
        " modify the values through the properties
        loc.XVal = 50
        loc.YVal = 100
        Console.WriteLine("Loc1 location: {0}", loc)
    End Sub "myFunc
End Class
Public Structure Location
    " the Structure has private data
    Private myXVal As Integer
    Private myYVal As Integer
    " constructor
    Public Sub New( _
       ByVal xCoordinate As Integer, ByVal yCoordinate As Integer)
        myXVal = xCoordinate
        myYVal = yCoordinate
    End Sub "New
    " property
    Public Property XVal( ) As Integer
        Get
            Return myXVal
        End Get
        Set(ByVal Value As Integer)
            myXVal = Value
        End Set
    End Property
    Public Property YVal( ) As Integer
        Get
            Return myYVal
        End Get
        Set(ByVal Value As Integer)
            myYVal = Value
        End Set
    End Property
    " Display the structure as a String
    Public Overrides Function ToString( ) As String
        Return [String].Format("{0}, {1}", xVal, yVal)
    End Function "ToString
End Structure "Location


Simple Structure Demo

Imports System
Public Class MainClass
    Shared Sub Main()
        "Declare a Customer object
        Dim objNewCustomer As Customer
        "Create the new customer
        objNewCustomer.FirstName = "f"
        objNewCustomer.LastName = "l"
        objNewCustomer.Email = "e"
        
        System.Console.WriteLine(objNewCustomer)
    End Sub
End Class
Public Structure Customer
    "Public members
    Public FirstName As String
    Public LastName As String
    Public Email As String
    "Name property
    Public ReadOnly Property Name() As String
        Get
            Return FirstName & " " & LastName
        End Get
    End Property
    """ <summary>
    """ Overrides the default ToString method
    """ </summary>
    """ <returns>String</returns>
    """ <remarks>Returns the customer name and email address</remarks>
    Public Overrides Function ToString() As String
        Return Name & " (" & Email & ")"
    End Function
End Structure


Store Structure into a Collection

Imports System
Imports System.Data
Imports System.Collections
Imports System.Windows.Forms
Public Class MainClass
    Shared Sub Main()
        Dim customers As CustomerCollection = New CustomerCollection()
        customers.Clear()
        
        Dim newCustomer As Customer
        newCustomer.FirstName = "firstName"
        newCustomer.LastName = "lastName"
        newCustomer.Email = "email"
        " add it to the list...
        customers.Add(newCustomer)

        
    End Sub
End Class
Public Structure Customer
    Public FirstName As String
    Public LastName As String
    Public Email As String
    Public ReadOnly Property Name() As String
        Get
            Return FirstName & " " & LastName
        End Get
    End Property
    Public Overrides Function ToString() As String
        Return Name & " (" & Email & ")"
    End Function
    Public Function IsEmpty() As Boolean
        If FirstName = "" Then
            Return True
        Else
            Return False
        End If
    End Function
End Structure
Public Class CustomerCollection
    Inherits System.Collections.CollectionBase
    Private _emailHashtable As New Hashtable()
    Public Sub Add(ByVal newCustomer As Customer)
        Me.List.Add(newCustomer)
        Dim useEmail As String
        useEmail = newCustomer.Email.ToLower
        EmailHashtable.Add(useEmail, newCustomer)
    End Sub
    Public Sub Remove(ByVal removeCustomer As Customer)
        Me.List.Remove(removeCustomer)
        Dim useEmail As String
        useEmail = removeCustomer.Email.ToLower()
        EmailHashtable.Remove(useEmail)
    End Sub
    Default Public Property Item(ByVal index As Integer) As Customer
        Get
            Return Me.List.Item(index)
        End Get
        Set(ByVal Value As Customer)
            Me.List.Item(index) = Value
        End Set
    End Property
    Public ReadOnly Property EmailHashtable() As Hashtable
        Get
            Return _emailHashtable
        End Get
    End Property

    Default Public ReadOnly Property Item(ByVal email As String) _
            As Customer
        Get
            email = email.ToLower()
            Return EmailHashtable.Item(email)
        End Get
    End Property
    Public Shadows Sub Clear()
        MyBase.Clear()
        EmailHashtable.Clear()
    End Sub
    Public Shadows Sub RemoveAt(ByVal index As Integer)
        Remove(Item(index))
    End Sub
End Class


Structure overrides ToString method

Imports System
Public Class MainClass
    
    Shared Sub Main()
        Dim loc1 As Location  
        loc1.XVal = 75
        loc1.YVal = 225
        " display the values in the structure
        Console.WriteLine("Loc1 location: {0}", loc1)
    End Sub
End Class
      Public Structure Location
         Private myXVal As Integer
         Private myYVal As Integer
         Public Sub New( _
            ByVal xCoordinate As Integer, ByVal yCoordinate As Integer)
             myXVal = xCoordinate
             myYVal = yCoordinate
         End Sub "New
         Public Property XVal(  ) As Integer
             Get
                 Return myXVal
             End Get
             Set(ByVal Value As Integer)
                 myXVal = Value
             End Set
         End Property
         Public Property YVal(  ) As Integer
             Get
                 Return myYVal
             End Get
             Set(ByVal Value As Integer)
                 myYVal = Value
             End Set
         End Property
         Public Overrides Function ToString(  ) As String
             Return String.Format("{0}, {1}", XVal, YVal)
         End Function 
     End Structure


Structure Variable assignment

Imports System
Imports System.Data
Imports System.Collections
public class MainClass
   Shared Sub Main()
        Dim S1 As New StringStructure("Hello")
        Dim S2 As StringStructure
        S2 = S1
        S2.SetString("Modified")
        Console.WriteLine("Struct: " + S1.AString)
   End Sub
End Class

Public Structure StringStructure
    Public AString As String
    Public Sub SetString(ByVal newstring As String)
        AString = newstring
    End Sub
    Public Sub New(ByVal InitialString As String)
        AString = InitialString
    End Sub
End Structure


Structure with Constructor

Imports System
Public Class MainClass
    
    Shared Sub Main()
        Dim loc1 As New Location(200, 300)
        Console.WriteLine("Loc1 location: {0}", loc1)
        Dim loc2 As New Location(  )
        Console.WriteLine("Loc2 location: {0}", loc2)
        myFunc(loc1)
        Console.WriteLine("Loc1 location: {0}", loc1)
    End Sub
    Shared Public Sub myFunc(ByVal loc As Location)
        loc.XVal = 50
        loc.YVal = 100
        Console.WriteLine("Loc1 location: {0}", loc)
    End Sub
End Class

      " declare a Structure named Location
     Public Structure Location
         " the structure has private data
         Private myXVal As Integer
         Private myYVal As Integer

         " constructor
         Public Sub New( _
            ByVal xCoordinate As Integer, ByVal yCoordinate As Integer)
             myXVal = xCoordinate
             myYVal = yCoordinate
         End Sub "New
         " property
         Public Property XVal(  ) As Integer
             Get
                 Return myXVal
             End Get
             Set(ByVal Value As Integer)
                 myXVal = Value
             End Set
         End Property
         Public Property YVal(  ) As Integer
             Get
                 Return myYVal
             End Get
             Set(ByVal Value As Integer)
                 myYVal = Value
             End Set
         End Property
         " Display the structure as a String
         Public Overrides Function ToString(  ) As String
             Return String.Format("{0}, {1}", xVal, yVal)
         End Function "ToString
     End Structure "Location


ToString Method for Structure data type

Imports System
Imports System.Data
Imports System.Collections
public class MainClass
   Shared Sub Main()
        Dim a As StringStructure
        a.SetString("Hello")
        Dim b As StringStructure = a
        Console.WriteLine("B"s String: " + b.AString)
        Dim c As New StringStructure("Another string")
        Console.WriteLine("C"s String: " + c.AString)
        Console.WriteLine("C"s ToString: " + c.ToString())
        Dim obj As Object
        obj = c
        Console.WriteLine(obj.ToString())
   End Sub
End Class

Public Structure StringStructure
    Public AString As String
    Public Sub SetString(ByVal newstring As String)
        AString = newstring
    End Sub
    Public Sub New(ByVal InitialString As String)
        AString = InitialString
    End Sub
End Structure