Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Visual Basic .NET & C# Die Qual der Wahl?

Ähnliche Präsentationen


Präsentation zum Thema: "Visual Basic .NET & C# Die Qual der Wahl?"—  Präsentation transkript:

1 Visual Basic .NET & C# Die Qual der Wahl?
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Visual Basic .NET & C# Die Qual der Wahl? Frank Prengel Technologieberater Microsoft GmbH

2 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

3 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

4 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Das .NET Framework VB C++ C# J# JScript Visual Studio .NET Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32

5 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Das .NET Framework Visual Studio .NET: integrierte Entwicklungsumgebung Solution Explorer, Toolbox, Debugger visuelle Designer, Code Editor IntelliSense, Syntaxkontrolle, dyn. Hilfe mehrsprachige Projektmappen RAD für Desktop Server Web (UI, -services) Smart Devices VB C++ C# J# JScript Visual Studio .NET Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32

6 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Das .NET Framework Common Language Specification definiert Anforderungen, die .NET-Sprachen erfüllen müssen sichert Interoperabilität der Sprachen Datentypen sind Teilmenge des Common Type System Microsoft: Visual Basic®, C#, C++, J#, JScript® andere: Cobol, Perl, Python, Smalltalk, Delphi, ... VB C++ C# J# JScript Visual Studio .NET What is the Common Language Specification? Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32

7 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Das .NET Framework Common Language Runtime verwaltet ausgeführten Code Typprüfungen, Fehlerbehandlung, Garbage Collection, …  virtuelle Maschine selbstbeschreibende Komponenten Assemblies enthalten Metadaten + Code Just-In-Time-Compiler MSIL  Maschinencode Komp. auf Methodenebene Optimierung zur Laufzeit feinkonfigurierbare Sicherheit VB C++ C# J# JScript Visual Studio .NET Common Language Runtime Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32

8 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

9 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Basic für das neue Jahrtausend… bietet Features, die Entwickler bisher an Basic vermissten mehr als nur Visual Basic "6 + 1" …mit der Power von .NET einfaches Web Development voller Zugriff auf die .NET-Plattform Daten, XML, WinCE-Entwicklung, ... einfaches Deployment Microsoft Installer Introduction to Visual Basic .NET for Visual Basic Veterans

10 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
modern & leistungsfähig komplett objektorientiert unterstützt freies Threading unterstützt strukturierte Fehlerbehandlung robust strikte Typprüfung Variableninitialisierung bei Deklaration vereinfacht basiert auf .NET Base Class Library viele "Legacy"-Features entfernt

11 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
volle Objektorientierung Strukturierung in Namensräumen Vererbung: von einer Basisklasse, von beliebig vielen Interfaces Overriding & Shadowing von Basisklassenmethoden Überladen von Methoden nicht a priori abwärtskompatibel CLS-konform

12 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

13 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Visual C# .NET erste konsequent komponentenorientierte Sprache der "C-Familie" Syntax ähnlich C++ & Java vereinfachte Programmierung keine Header-Dateien, Makros, IDL keine Mehrfachvererbung typsicher XML-Kommentare zwecks Dokumentation Visual C# Language Comparison Between C++ and C#

14 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Visual C# .NET bestmögliche Interoperabilität mit bestehendem Code COM-Komponenten: COM Interop Win32 API: P/Invoke vorzeichenlose Datentypen unterstützt Pointer und C-ähnliche Speicherverwaltung unsafe, stackalloc memory pinning von Variablen (fixed)

15 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

16 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Gemeinsamkeiten gleichberechtigte Sprachen in .NET visuelle Designer für WinForms, WebForms, XSD, HTML, ... verwenden .NET-Klassenbibliothek unterstützen COM Interop, P/Invoke Sprachcompiler generieren MSIL hohe Performance s. z.B. B. Marquardt "Performance in .NET", XML in Action 2002, Potsdam

17 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Gemeinsamkeiten Demo Sub Main(ByVal args() As String) Console.WriteLine("Hello VB") End Sub VB .method public static void Main(string[] args) cil managed { .entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( ) // Code size (0xe) .maxstack 8 IL_0000: nop IL_0001: ldstr "Hello VB" IL_0006: call void [mscorlib]System.Console::WriteLine(string) IL_000b: nop IL_000c: nop IL_000d: ret } // end of method Class1::Main [STAThread] static void Main(string[] args) { Console.WriteLine("Hello C#"); } C# Demo "MSIL_CHECKED" .method private hidebysig static void Main(string[] args) cil managed { .entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( ) // Code size (0xb) .maxstack 1 IL_0000: ldstr "Hello C#" IL_0005: call void [mscorlib]System.Console::WriteLine(string) IL_000a: ret } // end of method Class1::Main

18 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

19 Syntax: Grundlegendes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Grundlegendes Groß-/Kleinschreibung VB kein Unterschied DIM a as dOuBle ' OK Dim b As Integer, B as Long ' Fehler! C# wesentlich int a, A; // OK Long b; // Fehler! nicht CLS-konform, falls public! [CLSCompliant(true)] verwenden "For two identifiers to be considered distinct, they must differ by more than just their case. "

20 Syntax: Grundlegendes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Grundlegendes Anweisungstrennzeichen VB CR/LF (auch: ":") Zeilenfortsetzung: " _" Formatierung ist entscheidend! C# ; freie Formatierung möglich Blocktrennzeichen VB Sub ... End Sub (u.ä.)  keine beliebigen Blöcke möglich C# { ... }

21 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Datentypunterstützung Visual Basic .NET C# .NET CTS Object object System.Object String string System.String Byte byte System.Byte Short short System.Int16 Integer int System.Int32 Long long System.Int64 Single float System.Single Double double System.Double Boolean bool System.Boolean Char char System.Char Decimal decimal System.Decimal sbyte System.SByte ushort System.UInt16 uint System.UInt32 ulong System.UInt64 nicht CLS-konform

22 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Arrays: Erstellung VB Dim a(n) as Integer erzeugt n+1 Elemente (0 ... n) ! C# int [] a = new int[n]; erzeugt n Elemente (0 ... n-1) ! Arrays: Größenänderungen VB ReDim Preserve ... C# n/a Framework-Klassen wie ArrayList verwenden

23 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Variableninitialisierung VB automatisches Initialisieren mit 0 oder Nothing nur bei Erzeugung (lokale Variablen!) C# explizites Initialisieren notwendig VB + C# Initialisieren bei Deklaration möglich: Dim i as Integer = 0 int i = 0; Wichtige Neuerung in VB.NET gegenüber VB6: Dim a, b, c As Integer erzeugt 3 Integer-Variablen(!)

24 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen VB unterstützt außerdem: Steuerung expliziter Variablendeklaration: Option Explicit { On | Off } Steuerung von Typumwandlungen: Option Strict { On | Off } Steuerung des Stringvergleichs: Option Compare { Binary | Text } EXPLICIT: force expl. decl. of all variables default: OFF, if nothing specified if OFF, all vars are of type object STRICT: (neu in VB.NET) restricts implicit type conversions to only widening conversions OFF if nothing specified COMPARE: default comparison methods for strings Text: case insensitive

25 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Demo C# unterstützt außerdem: ?: << >> operator overloading public static MyType operator –(MyType x){ ... } Testen auf Überlauf bei arithmetischen Operationen: checked / unchecked VB: IIf(a,b,c) Demo operator overloading: OP_OVERLOADING Demo checked/unchecked: MSIL_CHECKED

26 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Funktionen Deklaration VB Function FunctionName(arg1 as Type, ... argN as _ Type) as ReturnType     ...     Return someVariableOfReturnType End Function Sub ProcedureName(arg1 as Type, ... argN as Type)     ... End Sub C# ReturnType FunctionName(Type arg1, ... Type argN) {     ...     return someVariableOfReturnType; }

27 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Funktionen Demo Select Case / switch VB Select Case i Case "Frank", "Michael" To "Paul" Console.WriteLine("Frank's group") Case o Console.WriteLine("It's John") Case Else Console.WriteLine("S.o. else") End Select C# switch(i) { case "Frank" : case "Michael" : ... case "Paul" : Console.WriteLine("Frank's group"); break; case "John" : Console.WriteLine("John"); break; default: Console.WriteLine("S.o. else"); break; } Demo: SWITCH_SELECTCASE

28 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Funktionen Demo Verschiedenes VB Vorhandensein von Return in allen Rückkehrzweigen einer Funktion wird nicht geprüft Unterstützung optionaler Parameter OLE Automation! Unterstützung von Modulen Variablen & Funktionen Assembly-global Shared members: Zugriff über Typ oder Instanz Standardsichtbarkeit in Klassen: Public C# static members: Zugriff nur über Typ Standardsichtbarkeit in Klassen: private Demo Return: RETURN Demo optionale Parameter: OLEAUT Demo static members: OP_OVERLOADING

29 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Aktuelle Instanz referenzieren VB Me C# this Konstruktoren VB Public Class AClass Public Sub New(ByVal n as String) End Sub End Class C# public class AClass { public AClass(string n) { ... } ... }

30 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Destruktoren VB Protected Overrides Sub Finalize() ... C# ~AClass() { ... } Garbage Collector  nichtdeterministische Finalisierung besser: IDisposable.Dispose() zur expliziten Freigabe von Ressourcen in C# autom. Scoping durch using: using (Font myFont=new Font(...)) { ... }

31 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Vererbung vs. Interface-Implementation VB Public Class DClass Inherits BClass Implements IInt Welche Methode implementiert welche? Sub X() Implements IInt.Y eine Methode kann vielfach implementieren: Sub X() Implements IInt1.Y, IInt2.Z C# public class DClass : BClass, IInt explizite Interface-Methoden-Implementation: int IInt.X(); (Cast auf Interface nötig; kein public/private/... erlaubt!) Demo "MultIFImpl"

32 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Schlüsselwörter VB MustInherit, NotInheritable, Overridable, Overrides, Shadows, ... C# abstract, sealed, virtual, override, new, ... Konstruktor der Basisklasse aufrufen VB Public Sub New(ByVal n as String) MyBase.New() ... End Sub C# public AClass() : base() { ... }  impliziter Aufruf des Default-C'tors

33 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Events VB Dim WithEvents o as EventSource ... Event Happened(...) ... RaiseEvent Happened() ... Sub hendl() Handles o.Happened ... Delegates (s. C#) C# public delegate void HappenedHndl(object sender, EventArgs e); public event HappenedHndl Happened; ... Happened(this, eventargs); ... public void sthHappened(object s, EventArgs a); o.Happened += new HappenedHndl(sthHappened); Demo: EVENTS

34 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Verschiedenes VB unterstützt With-Konstrukt: With myObj .SomeFct(x,y) .val = 42 End With Unterstützung von "Legacy"-VB-Anweisungen im Namensraum Microsoft.VisualBasic bequemes Verwenden von Late Binding Imports gewährt Zugriff auf Namensräume und Objekte C# unterstützt Parameter vom Typ out Visual Basic Runtime Namespace in Visual Studio

35 Syntax: Verschiedenes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Verschiedenes Unsafe Code VB n/a C# Zeiger etc. möglich: unsafe void Foo() { char* buf = stackalloc char[256]; ... } nicht durch die CLR verifizierbar Ausführung nur unter "verschärften" Sicherheitsbedingungen möglich

36 Syntax: Verschiedenes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Verschiedenes Demo Dokumentation VB keine besondere Unterstützung manuelles Erstellen von Hilfe-Dateien Add-Ins (IntelliDoc) V.Next ... C# Spezielle Tags für XML-Dokumentation: /// <summary> Erste Klasse! </summary> /// <seealso cref="Class2"/> Generieren von Online-Dokumentation Demo: OP_OVERLOADING

37 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

38 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Sonstiges Class View VB Standard C# erweitert

39 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Sonstiges Echtzeit-Syntaxkontrolle VB Code Validation Background Compile (entdeckt Build Errors zur Entwurfszeit!) C# Verschiedenes VB Automatische End ... -Blockanweisungen Automatisches Einrücken von Code Automatische Groß-/Kleinschreibung C# Automatische {} -Klammerpaare Automatisches Einrücken (begrenzt)

40 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

41 Migration VB 6 VB .NET

42 VB6  VB .NET 3 Upgrade-Strategien:
komplette Neuimplementierung in .NET komplette Portierung alte Programmarchitektur bleibt intakt Mischlösung auf bestehenden Code aufbauen VB 6-Komponenten weiterverwenden, .NET-Komponenten sinnvoll darauf aufsetzen später Schritt für Schritt migrieren

43 VB6  VB .NET Sie entscheiden: Machen Sie einen Upgrade-Plan!
Wie sieht Ihre Anwendungsarchitektur aus? Handelt es sich um eine Neuentwicklung oder soll die Applikation nur noch gewartet werden? Machen Sie einen Upgrade-Plan! Welche Aspekte/Teile Ihrer Anwendung gewinnen "added value" durch .NET? Wie kann die bestehende Anwendung für das Upgrade "fit" gemacht werden?

44 VB6  VB .NET Upgrade-Technologien: Code-Migration Interoperabilität
Upgrade Wizard Sourcecode Analyzer Tools (Dritthersteller) Application Mining Tools (Dritthersteller) Interoperabilität COM Interop Platform Invoke (P/Invoke)

45 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
VB6  VB .NET Demo Demo: VB6_2_VBNET

46 VB6  VB .NET Weiterführende Infos im Internet: MSDN® Website:
VB .NET Upgrade Websites: upgrade/guide.asp Technology/vbupgrade.asp VB 6tovbdotnet.htm

47 VB6  VB .NET Weiterführende Informationen – Bücher:
Ed Robinson, Michael Bond, Ian Oliver: "Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET" Microsoft Press; ISBN X "Von Microsoft Visual Basic 6.0 nach Microsoft Visual Basic.NET" Microsoft Press; ISBN Dan Appleman: "Moving to VB.NET" Apress; ISBN:

48 Migration Visual C# Java

49 Java  C# 3 Wege zu .NET für Java-Programmierer:
VJ COM-Anwendungen: COM Interop Visual J# .NET: Java-Sprache für .NET (erzeugt MSIL) Java Language Conversion Assistant (JLCA): Sourcecode-Migration Java  C#

50 Java  C# Java Language Conversion Assistant
aktuell: Beta2 (http://msdn.microsoft.com/vstudio/downloads/jca/default.asp) konvertiert automatisch Java  C# JSP  ASP.NET (final version) J2EE  .NET (ArtinSoft, MS-Partner) Integration in Visual Studio .NET unterstützt JDK 1.1.4

51 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Java  C# Demo Demo: JAVA_2_CS

52 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung

53 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Zusammenfassung Highlights VB CLS-konform gute Unterstützung von OLE Automation Background Compile beim Editieren einfache Event-Syntax weitgehende automatische Codeformatierung C# "Sprache des .NET Framework" erzwingt Programmierdisziplin XML-Dokumentation ermöglicht "unsicheren" Code

54 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Zusammenfassung Naheliegende Migrationspfade: Visual Basic 6  Visual Basic .NET C/C++, Java  Visual C# .NET VB .NET ist vollwertige .NET-Sprache kein Grund für Minderwertigkeitskomplexe mehr!  Base Class Library bestimmt verfügbare Funktionalität Wahl der Sprache für 95% der Probleme irrelevant

55 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Zusammenfassung VB C# .NET Sie haben die Q Sie haben die Sie haben die Qu Wahl!

56 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Fragen?

57 Weitere Informationen
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Weitere Informationen INFO: "Differences Between Visual Basic .NET and Visual C# .NET" White Paper Is Available (Q308470) Daniel Appleman "Visual Basic .NET or C#...Which to Choose?" Eric Gunnerson "A Programmer's Introduction to C#", Apress 2001 Daniel Appleman "Moving to VB.NET: Strategies, Concepts, and Code", Apress 2001 Bernd Marquardt "Performance in .NET", XML in Action 2002, Potsdam VB .NET Upgrade Guide upgrade/guide.asp Java Language Conversion Assistant

58 Allgemeine Informationen
Ralf Westphal: ".NET kompakt" Spektrum Akad. Vlg.; ISBN: Jeffrey Richter: "Applied Microsoft .NET Framework Programming" Microsoft Press; ISBN:

59 BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Microsoft’s Vision Empower people software through great any time, any place, and on any device.


Herunterladen ppt "Visual Basic .NET & C# Die Qual der Wahl?"

Ähnliche Präsentationen


Google-Anzeigen