El documento describe los diferentes tipos de elementos que pueden contener un espacio de nombres .NET, incluyendo clases, estructuras, enumeraciones, interfaces y delegados. Las clases son tipos de referencia que requieren la creación de instancias mediante constructores, mientras que las estructuras son tipos de valor. Las enumeraciones contienen conjuntos de constantes relacionadas, e interfaces y delegados definen contratos de métodos sin implementación.
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Los tipos de un espacio de nombres
1. Los tipos de un espacio de nombres .NET
Una vez que haya hecho un espacio de nombres accesible a su código, puede acceder a
cualquiera de los tipos que contiene. En esta sección, examinaremos los tipos que puede
contener un espacio de nombres .NET.
Las clases
En VB.NET, las clases son tipos de referencia; es decir, cuando creas una instancia de una
clase en código, trabajas con un puntero (o referencia) al objeto en lugar de hacerlo con el
objeto en sí.
Cuando se crea una instancia de una clase .NET, se ejecuta su constructor (o su subrutina
New). Cada clase .NET puede tener uno o más constructores (es decir, los constructores
pueden estar sobrecargados (overloaded)), y el constructor puede estar sin parámetros o
parametrizado.
Visual Basic .NET proporciona tres formas de inicializar una variable e invocar su
constructor. Estos se ilustran en los siguientes tres conjuntos de declaraciones, cada una de
las cuales crea una instancia de un objeto System.IO.FileInfo:
'Declaración única. Recomendada
Dim oFile As New FileInfo ("c:documentsnotes.txt")
'Declaración única con llamada separada al constructor
Dim oFile As FileInfo = New FileInfo ("c:documentsnotes.txt")
'Declaración separada e inicialización
Dim oFile As FileInfo
oFile = New FileInfo ("c:documentsnotes.txt")
Una vez que creamos una instancia de una clase, podemos invocar sus propiedades y
métodos. Además, podemos manejar sus eventos (asumiendo que expone eventos) si
creamos una instancia del objeto usando la WithEvents palabra clave.
Dim WithEvents cn As New SqlConnection()
Visual Basic .NET, admite tanto miembros de instancia como compartidos.
Instance members existen para cada instancia de una clase.
Shared members son miembros que no están asociados con una instancia específica de una
clase o estructura, sino que son comunes a todas las instancias de una clase.
El acceso a un miembro compartido (Shared) de una clase no requiere que se cree una
instancia de la clase; se puede acceder usando solo el nombre de la clase. Además, si el
miembro compartido es una propiedad, tiene un valor único para todas las instancias de la
clase.
Accedimos al método WriteLine compartido de la clase Console, de la siguiente manera:
Console.WriteLine(oPerson.Name)
Tenga en cuenta que, para hacer esto, no tuvimos que crear una instancia de la clase de la
Consola; simplemente llamamos a la clase Console directamente.
2. Una peculiaridad de Visual Basic es que puede invocar miembros compartidos usando el
nombre de clase o el nombre de una variable de instancia. El siguiente fragmento de código,
que crea una instancia de la clase Console, también funciona:
Dim con As Console
con.WriteLine(oPerson2.Gender.ToString)
Estructuras
Las estructuras son muy similares a las clases, excepto que son tipos de valor en lugar de
tipos de referencia. La mayoría de los tipos de datos primitivos (Boolean, Byte, Char, Int16,
Int32, etc.) definidos en la FCL (Framework Class Library, biblioteca de clases) se
implementan como estructuras.
Trabaja con estructuras de la misma manera que trabaja con clases .NET, excepto que
la palabra clave New no se usa para declarar una estructura:
'Declaración e inicialización
Dim num1 As Int16 = 10
'Declaración separada e inicialización
Dim num2 As Int16
num2 = 10
Enumeraciones
Una enumeración es un conjunto relacionado de constantes.
No tiene que crear instancias de enumeraciones para aprovechar sus miembros. Sin
embargo, cuando trabaje con enumeraciones en .NET, debe especificar el nombre de la
enumeración para poder acceder a una de sus constantes. Por ejemplo:
Dim dy As String = WeekdayName(1, False, FirstDayOfWeek.Sunday)
Interfaces
Las interfaces son clases de base virtual; es decir, están formados por miembros (métodos,
propiedades y eventos) que no tienen implementación.
En su lugar, las clases derivadas deben proporcionar la implementación. Por ejemplo, el
siguiente fragmento de código usa la herencia de interfaz para definir una nueva clase:
Class CustomCompare
Implements System.IComparable
Public Function CompareTo(obj As Object) As Integer _
Implements System.IComparable.CompareTo
' Implementation of IComparable.ICompareTo
End Function
End Class
3. Delegados
Un delegado es un tipo de referencia que representa un puntero a función fuertemente
tipado.
Todos los delegados se derivan explícita o implícitamente de la clase System.Delegate, que
incluye un número de miembros que proporcionan información sobre el delegado, crean
instancias de objetos o invocan al delegado.
Los delegados se pueden utilizar en procedimientos de eventos, para devoluciones de
llamadas asíncronas y donde se espera la dirección de una función. El siguiente ejemplo
utiliza un delegado para definir el thread procedure que se pasará al método
QueueUserWorkItem de la clase ThreadPool:
Option Strict On
Imports Microsoft.VisualBasic
Imports System
Imports System.Threading
Imports System.Windows.Forms
Public Class ThreadedForm : Inherits Form
Protected WithEvents btnStart As Button
Protected lblOutput As Label
Public Shared Sub Main()
Dim thrdForm As New ThreadedForm()
Application.Run(thrdForm)
End Sub
Public Sub New()
Me.Height = 200
Me.Width = 400
btnStart = New Button()
btnStart.Text = "&Start"
btnStart.Top = 50
btnStart.Left = 100
btnStart.Width = 75
btnStart.Height = 50
Me.Controls.Add(btnStart)
lblOutput = New Label()
lblOutput.Top = 125
lblOutput.Left = 100
lblOutput.Width = 200
lblOutput.Height = 75
Me.Controls.Add(lblOutput)
Me.Text = "Asynchronous Callback Example"
End Sub
Protected Sub btnStart_Click(sender As Object, _
e As EventArgs) _
Handles btnStart.Click
btnStart.Enabled = False
Dim thrdProc As WaitCallback = AddressOf ThreadProcedure
ThreadPool.QueueUserWorkItem(thrdProc, 1000000)
End Sub
Protected Sub ThreadProcedure(o As Object)
Dim i As Integer
If TypeOf o Is Integer Then
i = DirectCast(o, Integer)
Else
Exit Sub
End If
Dim lCtr As Long
For lCtr = 0 to 10000000
4. If lCtr Mod 1000000 = 0 Then
lblOutput.Text = lblOutput.Text & "X"
End If
Next
End Sub
End Class