C# & VB.net Alex Sánchez Logic Studio Panamá MCAD – MVP VB.NET alex.sanchez@logicstudio.net
Agenda C# y VB.NET Perspectiva gerencial Perspectiva de programación Estadísticas TechEd 2002
“Si bien existen diferencias entre Visual Basic. NET y Visual C# “Si bien existen diferencias entre Visual Basic .NET y Visual C# .NET, ambos son lenguajes de programación de primera clase basados en el Microsoft .NET Framework." TechEd 2002
Perspectiva Gerencial
Perspectiva gerencial C# y VB.NET son dos de los lenguajes de programación mas difundidos en .NET Para un proyecto al que se le establece un solo diseño/arquitectura, la funcionalidad que se codifique en C# o VB.NET puede llegar a ser equivalente Elementos a considerar, modelo conceptual de ambos lenguajes, background del equipo de programadores, oferta profesional y tendencias. TechEd 2002
Conozcamos C# y VB.Net Ambos leguajes se fundamentan en: Modelo de programación orientado a objetos Implementados sobre el dotnet framework Código seguro, Soporte a aplicaciones Web, Windows, Móvil,… Con ambos lenguajes podemos tener proyectos exitosos Programando en el 2005 al estilo de 1998 TechEd 2002
Resumen comparativo VB.NET C# Tiene una sintáxis similar a VB6 Primera impresión de camino de transición del equipo de programadores VB6 Debe cuidarse sacar provecho a la OO y Arquitectura Reglas del lenguaje opcionales por omisión Se recomienda trabajar declarando variables y sin conversiones de datos implícitas C# Tiene una sintáxis similar a C o Java Opción natural para programadores con experiencia en OO Debe cuidarse la sobre Ingeniería IDE mas simple (2005 mejorado), reglas del lenguaje estrictas (no hay opción) Toda variable debe ser declarada, las conversiones de datos son explicitas, sensible a mayúsculas
Consideraciones Recursos Oferta Perfil del equipo de desarrollo Entrenamiento Oferta Profesionales y Centros de Entrenamiento En perspectiva si la organización cuenta con técnicos VB podría ganarse cierto tiempo en formación al optar por VB.NET, debe cuidarse de emplear apropiadamente los nuevos elementos de arquitectura y orientación a objetos. C# es una propuesta que parte de cero, es mas estricto y exigente en sintáxis, esta exigencia forma a los miembros del equipos de programación
Perspectiva de Programación
Perspectiva del programador C# y VB.NET tienen sintáxis diferente, ¿Cómo son equivalentes? Imports Entidades Namespace LogicaNegocio.VBNet Public Class Facturacion ‘ Obtiene el subtotal por fila Public Function Totalizar(ByVal ds As _ DatasetFacturacion) Dim total = 0 Dim dr As _ DatasetFacturacion.Order_DetailsRow Dim i = 0 For i = 0 To ds.Order_Details.Rows.Count - 1 dr = ds.Order_Details.Rows(i) dr.Subtotal = dr.UnitPrice * dr.Quantity total += dr.Subtotal Next Return total End Function End Class End Namespace using Entidades; namespace LogicaNegocio.CSharp { public class Facturacion /* Obtiene el subtotal por fila */ public decimal Totalizar(DatasetFacturacion ds) decimal total = 0; DatasetFacturacion.Order_DetailsRow dr = null; for (int i=0; i<ds.Order_Details.Rows.Count;i++) dr = ds.Order_Details.Rows[i] as DatasetFacturacion.Order_DetailsRow; dr.Subtotal = dr.UnitPrice * dr.Quantity; total += dr.Subtotal; } return total; TechEd 2002
Cuando invocamos la funcionalidad se compilará CLR Tiempo de Compilación Assembly Code (IL) Source Code Language Compiler Metadata Tiempo de Ejecuciónj JIT Compiler Native Code The diagram above illustrates the process used to compile and execute managed code, that is, code that uses the CLR. Source code written in C#, VB.NET, or some other language that targets the CLR is first transformed into MSIL by the appropriate language compiler. Before execution, this MSIL is JIT compiled into native code for whatever processor the code will run on. The default is to JIT compile each method when it is first called, but it’s also possible to “pre-JIT” the MSIL. With this option, all methods are compiled before the application is loaded, so the overhead of JIT compilation on each initial method call is avoided. One point worth noting is that all languages targeting the CLR should exhibit roughly the same performance. While some compilers may produce better MSIL code than others, large variations in execution speed are unlikely. Cuando invocamos la funcionalidad se compilará TechEd 2002
Declaración de Variables Visual Basic .NET Visual C# .NET Dim i, j As Integer int i, j; Dim i As Integer = 7 int i = 7; Dim i(6) As Integer or Dim i() As Integer = New Integer(6) {} int[] i = new int[6]; Dim con As SqlConnection SqlConnection con; Dim x As New Y("ABC") Dim x As Y = New Y("ABC") x = new Y("ABC");
Bloques Visual Basic .NET Visual C# .NET A = 5 B = 7 : C = 8 MySub (Arg1, _ Arg2, _ Arg3) A = 5; B = 7; C = 8; MySub (Arg1, Arg2, Arg3); If A = 5 Then DoSomething() DoSomethingAgain() End If If (a == 5) { DoSomething(); DoSomethingAgain(); } or if (a == 5)
Operadores Operador Visual Basic .NET Visual C# .NET Básicos + - * / Comparación <> != Corto Circuito AndAlso && OrElse || Comentarios ‘ /* */ o //
Control de Flujo Decision structure (selection) Conditional Statement Visual Basic .NET Visual C# .NET Decision structure (selection) Select Case …, Case, Case Else, End Select switch, case, default, Decision structure (if … then) If … Then, ElseIf … Then, Else, End If if, else Loop structure (conditional) While… End While, Do [While, Until] …, Loop [While, Until] do, while, continue Loop structure (iteration) For …, [Exit For,] Next For Each …, [Exit For,] Next for, foreach Control flow statement Exit,Stop, End, Return, break, continue, return, throw
Anotaciones finales Los nuevos proyectos de computación, Windows, Móvil, Web, XML son desafios técnicamente cada vez más complejos que requieren la utilización apropiada de la técnología, la sintáxis del lenguaje que empleamos es un elemento más a considerar, seleccionemos el que sea más compatible con nuestra capacidad actual y los planes de crecimiento de la organización o del mercado La figura del arquitecto de software se encargara de diseñar el sistema y sus componentes, de aplicar patrones y mejores prácticas para que el equipo de desarrolladores (en el lenguaje que se determine) implemente la solución correcta. C# es un buen comienzo TechEd 2002
Mas información http://lab.msdn.microsoft.com/express/vcsharp http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308470 http://msdn.microsoft.com/library
recuerde completar su encuesta http:\\panama.latindevelopers.net Gracias por asistir recuerde completar su encuesta alex.sanchez@logicstudio.net © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. TechEd 2002