2. Agenda
• Diferencias entre Visual Basic 6 y .NET
• Migrando de Visual Basic .NET a C#
– Eliminando el Espacio de Nombres
Microsoft.VisualBasic
– Diferencias en la Sintaxis de C# vs VB.NET
– Algunos detalles adicionales
3. Diferencias entre Visual Basic 6 y .NET
• En Visual Basic .NET no existe el tipo de datos Variant
– En su lugar se utiliza el tipo de datos Object como tipo de datos
universal.
• Variables Integer y Long
– Las variables Integer se almacenan como números de 32 bits en lugar
de 16 bits.
– Las variables Long se almacenan como números de 64 bits en lugar de
32 bits.
– Las variables Short se almacenan como números de 16 bits. Ocupando
el espacio que dejan las Variables Integer
• Variables Date
– En .NET las variables se almacenan internamente como enteros de 64
bits, y no pueden manipularse directamente como antes se hacia en
Visual Basic 6.0 en el cual se almacenaba internamente como Double y
podía ser manipulada externamente.
http://www.microsoft.com/spanish/msdn/articulos/archivo/040501/voices/transitiondoc.asp
4. Diferencias entre Visual Basic 6 y .NET
• Instrucciones Type
– Las instrucciones Type que servian para establecer un tipo de datos
definido por el usuario cambia a Structure
• Valor de True
– El valor de true tiene un valor de 1 en .NET mientras que en Visual 6 era de
-1
• Empty
– En Visual Basic .NET las variables se inicializan en Nothing y mientras que
Visual Basic 6 se inicializaban en Empty
• Null
– En Visual Basic .NET no se admite la propagación de Null que en Visual
Basic 6 eran utilizados para para indicar que una variable contenía un dato
no valido
http://www.microsoft.com/spanish/msdn/articulos/archivo/040501/voices/transitiondoc.asp
5. Diferencias entre Visual Basic 6 y .NET
• Parámetro predeterminado ByVal/ByRef
– En Visual Basic .NET los parametros adoptan de forma predeterminada
el valor ByVal mientras que en Visual Basic 6 adoptaban de forma
predeterminada el valor ByRef.
• ADO, RDO y DAO
– ADO.NET substituye los objetos de ADO,RDO y DAO proporcionando
clases adicionales al acceso a datos que funcionan de forma
desconectada.
• Manejo de Errores Estructurado
– Try, Catch, Finally substituye el uso de On Error
http://www.microsoft.com/spanish/msdn/articulos/archivo/040501/voices/transitiondoc.asp
6. Migrando de Visual Basic .NET a C#
Eliminando el Espacio de Nombres Microsoft.VisualBasic
El espacio de nombres Microsoft.VisualBasic fue creado para permitir
una trancisión menos dolorosa al desarrollo en .NET.
• ¿Para que sirve eliminar el espacio de nombres
Microsoft.VisualBasic?
– Para que los programadores dejen de programar en las herramientas
de .NET al estilo de Visual Basic 6.
– Permite al desarrollador erradicar malas practicas que lleva arrastrando
desde la programación en Visual Basic 6.
– Una vez que se ha eliminado el espacio de nombres es mucho mas
sencillo aprender C#.
http://www.microsoft.com/spanish/msdn/articulos/archivo/040501/voices/transitiondoc.asp
7. Cambios al quitar el Namespace VisualBasic
• La función MsgBox no existe en .NET
– En Visual Basic NET la clase MessageBox con su metodo Show,
substituye a la función MsgBox de Vb 6.
Microsoft.VisualBasic
MsgBox(quot;Hola Mundoquot;, Microsoft.VisualBasic.MsgBoxStyle.OKOnly,
quot;Pantalla Ejemploquot;)
Visual Basic .NET
MessageBox.Show(quot;Hola Mundoquot;, quot;Pantalla Ejemploquot;,
MessageBoxButtons.OK)
Visual C#
MessageBox.Show(quot;Hola Mundoquot;, quot;Pantalla Ejemploquot;,
MessageBoxButtons.OK);
http://www.microsoft.com/spanish/msdn/articulos/archivo/040501/voices/transitiondoc.asp
8. Cambios al quitar el Namespace VisualBasic
• La función isNumeric y la función isDate
– En su lugar se pueden utilizar los metodos TryParse que acompañan a
los diversos Tipos.
Microsoft.VisualBasic
if isnumeric(Valor) then
Visual Basic .NET 2003
If Double.TryParse(Valor, Globalization.NumberStyles.Any,
Globalization.CultureInfo.CurrentCulture, ValorOut) Then
Visual C# 2003
if (Double.TryParse(Valor, System.Globalization.NumberStyles.Any,
System.Globalization.CultureInfo.CurrentCulture, out ValorOut))
Visual Basic .NET 2005
If Double.TryParse(Valor, ValorOut) Then
Visual C# 2005
if (Double.TryParse(Valor,out ValorOut ))
9. Cambios al quitar el Namespace VisualBasic
• Microsoft.VisualBasic.DateAndTime
– Dentro de este espacio de nombres se encuentran todas las funciones
que en Visual Basic 6 eran utilizadas para realizar operaciones que
tenian que ver con las fechas.
– Ejemplos:
• La función Now que trae la fecha y hora que tiene la maquina cambia por
Visual Basic .NET Visual C#
Dim x As Date DateTime x;
x = Date.Now x = DateTime.Now;
• Cuando quieres obtener una sección de una fecha
Visual Basic Visual Basic .NET Visual C#
Dim Dia As Integer Dim Dia As Integer Int Dia;
Dia=day(x) Dia=x.day Dia=x.day;
10. Cambios al quitar el Namespace VisualBasic
• Microsoft.VisualBasic.DateAndTime
• Algunos ejemplos adicionales serian:
DateAdd
VB Dateadd(DateInterval.Day,3,X)
VB.NET x.AddDays(3)
C# x.AddDays(3);
DateDiff
VB DateDiff(DateInterval.Second, X, Y)
VB.NET Y.Subtract(X).TotalSeconds
C# Y.Subtract(X).TotalSeconds;
11. Diferencias en la Sintaxis de C# vs VB.NET
• La sintaxis entre ambos lenguajes es diferente. Alguna diferencias son las
siguientes:
Definición de una clase
Visual Basic .NET Visual C#
Public Class NombreClase class NombreClase
{…}
End Class
Definición de una Propiedad
Visual Basic .NET Visual C#
Public Property Property1() As Integer public int Property
Get {
End Get
get {}
Set(ByVal value As Integer)
set {}
End Set
}
End Property
12. Diferencias en la Sintaxis de C# vs VB.NET
• La sintaxis entre ambos lenguajes es dieferente. Alguna diferencias son las
siguientes:
Definición de un Método
Visual Basic .NET Visual C#
Public Sub Method() public void Method()
End Sub {}
Public Function Method() As Integer public int Method1()
End Function {}
Definición de un Constructor
Sub New() public Class1()
End Sub {}
13. Diferencias en la Sintaxis de C# vs VB.NET
• La sintaxis entre ambos lenguajes es diferente. Alguna diferencias son las
siguientes:
Como se escribe una condición IF
Visual Basic .NET Visual C#
If Condicion Then if (Condicion)
End If {}
Definición de un bucle for
Visual Basic .NET Visual C#
For X As Integer = 1 To 10 for (int X = 1; i <= 10; i++)
Next { }
Select Case
Visual Basic .NET Visual C#
Select Case Opcion switch (Opcion){
Case quot;Xquot; case quot;Xquot;:
Case quot;Yquot; case quot;Yquot;:
End Select }
14. Algunos detalles adicionales
• Al trabajar con Visual C# debes tener cuidado con el Casing ya que este
lengiaje distingue entre mayusculas u minusculas, por lo que no es lo
mismo MiVariable que mivariable.
• Cuando un metodo en C# espera un valor en un tipo en espcifico este debe
ser convertido previamente antes de que pueda ser enviado como
parametro. Ej. MessageBox.Show(ValorOut.ToString()); Mientras que en
visual basic era valido realizarlo de la siguiente manera
MessageBox.Show(ValorOut).