terça-feira, 7 de julho de 2009

Structure

É possível criar suas próprias estruturas de dados no .Net.

Estruturas e classes são muito parecidas. Enquanto as funcionalidades são similares, estruturas são usualmente mais eficientes que classes. Você deve definir estruturas, tanto quanto classes, se o tipo realizar melhor como um “value type” do que como um “reference type”, Em questão, estruturas devem ser utilizadas seguindo os critérios abaixo:

- Logicamente representar um valor simples
- Ter um tamanho de instancia menor que 16 bytes
- Não deve ser mudado depois da criação
- Não deve ser transformado (Cast) em um tipo de referência

Abaixo segue o código do livro que estou estudando com um exemplo bem simples.
---------------------------
Imports System.Drawing

Partial Public Class StructureCycle
Inherits System.Web.UI.Page

Structure Cycle
Dim _val, _min, _max As Integer

Public Sub New(ByVal min As Integer, ByVal max As Integer)
_val = min : _min = min : _max = max
End Sub

Public Property Value() As Integer
Get
Return _val
End Get
Set(ByVal value As Integer)
If value > _max Then
_val = _min
ElseIf value < _min Then
_val = _max
Else
_val = value
End If
End Set
End Property

Public Overrides Function ToString() As String
Return Value.ToString
End Function

Public Function ToInteger() As Integer
Return Value
End Function

Public Shared Operator +(ByVal arg1 As Cycle, ByVal arg2 As Integer) As Cycle
arg1.Value += arg2
Return arg1
End Operator

Public Shared Operator -(ByVal arg1 As Cycle, ByVal arg2 As Integer) As Cycle
arg1.Value -= arg2
Return arg1
End Operator

End Structure


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim degrees As New Cycle(0, 359), quarters As New Cycle(1, 4)

For i As Integer = 0 To 8
degrees += 90 : quarters += 1
Response.Write("degrees = " & degrees.ToString & " quarters = " & quarters.ToString & "
")

Next

End Sub

End Class
---------------------------
O resultado mostra:

degrees = 90 quarters = 2
degrees = 180 quarters = 3
degrees = 270 quarters = 4
degrees = 0 quarters = 1
degrees = 90 quarters = 2
degrees = 180 quarters = 3
degrees = 270 quarters = 4
degrees = 0 quarters = 1
degrees = 90 quarters = 2

Nenhum comentário: