Post on 05-Apr-2015
Visual Basic .NET & C#Visual Basic .NET & C# Die Qual der Wahl?Die Qual der Wahl?
Frank PrengelFrank Prengel
TechnologieberaterTechnologieberater
Microsoft GmbHMicrosoft GmbH
frankpr@microsoft.comfrankpr@microsoft.com
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Syntax, SonstigesGemeinsamkeiten, Syntax, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Syntax, SonstigesGemeinsamkeiten, Syntax, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
Das .NET FrameworkDas .NET Framework
Win32Win32
MSMQMSMQ(Message(MessageQueuing)Queuing)
COM+COM+(Transactions, Partitions, (Transactions, Partitions,
Object Pooling)Object Pooling)IISIIS WMIWMI
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO.NET: Data and XMLADO.NET: Data and XML
Web ServicesWeb Services User InterfaceUser Interface
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# JScriptJScript …… Visu
al Stu
dio
.NE
T
ASP.NET WinForms
Das .NET FrameworkDas .NET Framework Visual Studio .NET: Visual Studio .NET:
integrierte Entwicklungsumgebungintegrierte Entwicklungsumgebung Solution Explorer, Toolbox, DebuggerSolution Explorer, Toolbox, Debugger visuelle Designer, Code Editorvisuelle Designer, Code Editor IntelliSense, Syntaxkontrolle, dyn. HilfeIntelliSense, Syntaxkontrolle, dyn. Hilfe mehrsprachige Projektmappenmehrsprachige Projektmappen RAD fürRAD für
DesktopDesktop ServerServer Web (UI, -services)Web (UI, -services) Smart DevicesSmart Devices
Win32
MSMQ(MessageQueuing)
COM+(Transactions, Partitions,
Object Pooling)IIS WMI
Common Language Runtime
Base Class Library
ADO.NET: Data and XML
Web Services User Interface
Common Language Specification
VB C++ C# J# JScript …
Vis
ual S
tud
io .N
ET
ASP.NET WinForms
Das .NET FrameworkDas .NET Framework
Common Language SpecificationCommon Language Specification definiert Anforderungen, die .NET-definiert Anforderungen, die .NET-
Sprachen erfüllen müssenSprachen erfüllen müssen sichert Interoperabilität der Sprachensichert Interoperabilität der Sprachen Datentypen sind Teilmenge des Datentypen sind Teilmenge des Common Common
Type SystemType System Microsoft: Visual BasicMicrosoft: Visual Basic®®, ,
C#, C++, J#, JScriptC#, C++, J#, JScript®®
andere: Cobol, Perl, andere: Cobol, Perl, Python, Smalltalk, Python, Smalltalk, Delphi, ...Delphi, ...
Win32
MSMQ(MessageQueuing)
COM+(Transactions, Partitions,
Object Pooling)IIS WMI
Common Language Runtime
Base Class Library
ADO.NET: Data and XML
Web Services User Interface
Common Language Specification
VB C++ C# J# JScript …
Vis
ual S
tud
io .N
ET
ASP.NET WinForms
Das .NET FrameworkDas .NET Framework Common Language RuntimeCommon Language Runtime
verwaltet ausgeführten Codeverwaltet ausgeführten Code Typprüfungen, Fehlerbehandlung, Garbage Typprüfungen, Fehlerbehandlung, Garbage
Collection, … Collection, … virtuelle Maschinevirtuelle Maschine
selbstbeschreibende Komponentenselbstbeschreibende Komponenten Assemblies enthalten Metadaten + CodeAssemblies enthalten Metadaten + Code
Just-In-Time-CompilerJust-In-Time-Compiler MSIL MSIL Maschinencode Maschinencode Komp. auf MethodenebeneKomp. auf Methodenebene Optimierung zur LaufzeitOptimierung zur Laufzeit
feinkonfigurierbare feinkonfigurierbare SicherheitSicherheit
Win32
MSMQ(MessageQueuing)
COM+(Transactions, Partitions,
Object Pooling)IIS WMI
Common Language Runtime
Base Class Library
ADO.NET: Data and XML
Web Services User Interface
Common Language Specification
VB C++ C# J# JScript …
Vis
ual S
tud
io .N
ET
ASP.NET WinForms
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Syntax, SonstigesGemeinsamkeiten, Syntax, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
Visual Basic .NETVisual Basic .NET
Basic für das neue Jahrtausend…Basic für das neue Jahrtausend… bietet Features, die Entwicklerbietet Features, die Entwickler bisher bisher
an Basic vermisstenan Basic vermissten mehr als nur Visual Basic "6 + 1"mehr als nur Visual Basic "6 + 1"
……mit der Power von .NETmit der Power von .NET einfaches Web Developmenteinfaches Web Development voller Zugriff auf die .NET-Plattformvoller Zugriff auf die .NET-Plattform
Daten, XML, WinCE-Entwicklung, ...Daten, XML, WinCE-Entwicklung, ...
einfaches Deploymenteinfaches Deployment Microsoft InstallerMicrosoft Installer
Visual Basic .NETVisual Basic .NET modern & leistungsfähigmodern & leistungsfähig
komplett objektorientiertkomplett objektorientiert unterstützt freies Threadingunterstützt freies Threading unterstützt strukturierte unterstützt strukturierte
FehlerbehandlungFehlerbehandlung robustrobust
strikte Typprüfungstrikte Typprüfung Variableninitialisierung bei DeklarationVariableninitialisierung bei Deklaration
vereinfachtvereinfacht basiert auf .NET Base Class Librarybasiert auf .NET Base Class Library viele "Legacy"-Features entferntviele "Legacy"-Features entfernt
Visual Basic .NETVisual Basic .NET
volle Objektorientierungvolle Objektorientierung Strukturierung in NamensräumenStrukturierung in Namensräumen Vererbung: von einer Basisklasse, von Vererbung: von einer Basisklasse, von
beliebig vielen Interfacesbeliebig vielen Interfaces Overriding Overriding && Shadowing Shadowing von von
BasisklassenmethodenBasisklassenmethoden Überladen von MethodenÜberladen von Methoden
nicht a priori abwärtskompatibelnicht a priori abwärtskompatibel CLS-konformCLS-konform
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Syntax, SonstigesGemeinsamkeiten, Syntax, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
Visual C# .NETVisual C# .NET erste konsequent erste konsequent
komponentenorientiertekomponentenorientierte Sprache der "C-Familie"Sprache der "C-Familie"
Syntax ähnlich C++ & JavaSyntax ähnlich C++ & Java vereinfachte Programmierungvereinfachte Programmierung
keine Header-Dateien, Makros, IDLkeine Header-Dateien, Makros, IDL keine Mehrfachvererbungkeine Mehrfachvererbung
typsicher typsicher XML-Kommentare zwecks XML-Kommentare zwecks
DokumentationDokumentation
Visual C# .NETVisual C# .NET
bestmögliche Interoperabilität mit bestmögliche Interoperabilität mit bestehendem Codebestehendem Code COM-Komponenten: COM-Komponenten: COM InteropCOM Interop Win32 API: Win32 API: P/InvokeP/Invoke vorzeichenlose Datentypenvorzeichenlose Datentypen
unterstützt Pointer und C-ähnliche unterstützt Pointer und C-ähnliche SpeicherverwaltungSpeicherverwaltung unsafeunsafe, , stackallocstackalloc memory pinningmemory pinning von Variablen ( von Variablen (fixedfixed))
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
GemeinsamkeitenGemeinsamkeiten, Syntax, Sonstiges, Syntax, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
GemeinsamkeitenGemeinsamkeiten
gleichberechtigte Sprachen in .NETgleichberechtigte Sprachen in .NET visuelle Designer für WinForms, visuelle Designer für WinForms,
WebForms, XSD, HTML, ...WebForms, XSD, HTML, ... verwenden .NET-Klassenbibliothekverwenden .NET-Klassenbibliothek unterstützen COM Interop, P/Invokeunterstützen COM Interop, P/Invoke Sprachcompiler generieren MSILSprachcompiler generieren MSIL hohe Performancehohe Performance
s. z.B. s. z.B. B. MarquardtB. Marquardt "Performance "Performance in .NET", XML in Action 2002, Potsdamin .NET", XML in Action 2002, Potsdam
GemeinsamkeitenGemeinsamkeitenSub Main(ByVal args() As String)Sub Main(ByVal args() As String) Console.WriteLine("Hello VB")Console.WriteLine("Hello VB")End SubEnd Sub
[STAThread][STAThread]static void Main(string[] args)static void Main(string[] args){ Console.WriteLine("Hello C#"); }{ Console.WriteLine("Hello C#"); }
.method private hidebysig static void Main(string[] args) cil managed.method private hidebysig static void Main(string[] args) cil managed{{ .entrypoint.entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) // Code size 11 (0xb)// Code size 11 (0xb) .maxstack 1.maxstack 1 IL_0000: ldstr "Hello C#"IL_0000: ldstr "Hello C#" IL_0005: call void [mscorlib]System.Console::WriteLine(string)IL_0005: call void [mscorlib]System.Console::WriteLine(string) IL_000a: retIL_000a: ret} // end of method Class1::Main} // end of method Class1::Main
.method public static void Main(string[] args) cil managed.method public static void Main(string[] args) cil managed{{ .entrypoint.entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe)// Code size 14 (0xe) .maxstack 8.maxstack 8 IL_0000: nopIL_0000: nop IL_0001: ldstr "Hello VB"IL_0001: ldstr "Hello VB" IL_0006: call void [mscorlib]System.Console::WriteLine(string)IL_0006: call void [mscorlib]System.Console::WriteLine(string) IL_000b: nopIL_000b: nop IL_000c: nopIL_000c: nop IL_000d: retIL_000d: ret} // end of method Class1::Main} // end of method Class1::Main
VBVB
C#C#
Demo
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Gemeinsamkeiten, SyntaxSyntax, Sonstiges, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
Syntax: GrundlegendesSyntax: Grundlegendes
Groß-/KleinschreibungGroß-/KleinschreibungVBVB kein Unterschiedkein Unterschied
DIM a as dOuBleDIM a as dOuBle ' OK' OKDim b As Integer, B as Long Dim b As Integer, B as Long ' Fehler!' Fehler!
C#C# wesentlichwesentlich
int a, A; int a, A; // OK// OKLong b; Long b; // Fehler!// Fehler!
nicht CLS-konform, falls nicht CLS-konform, falls publicpublic!! [CLSCompliant(true)][CLSCompliant(true)] verwenden verwenden
Syntax: GrundlegendesSyntax: Grundlegendes
BlocktrennzeichenBlocktrennzeichen
VBVB Sub ... End SubSub ... End Sub (u.ä.)(u.ä.)
keine beliebigen Blöcke möglichkeine beliebigen Blöcke möglichC#C# { ... }{ ... }
AnweisungstrennzeichenAnweisungstrennzeichen
VBVB CR/LFCR/LF (auch: "(auch: "::")") Zeilenfortsetzung: "Zeilenfortsetzung: " _ _"" Formatierung ist entscheidend!Formatierung ist entscheidend!
C#C# ;; freie Formatierung möglichfreie Formatierung möglich
Syntax: Daten & TypenSyntax: Daten & TypenDatentypunterstützungDatentypunterstützung
Visual Basic .NETVisual Basic .NET C#C# .NET CTS.NET CTS
ObjectObject objectobject System.ObjectSystem.Object
StringString stringstring System.StringSystem.String
ByteByte bytebyte System.ByteSystem.Byte
ShortShort shortshort System.Int16System.Int16
IntegerInteger intint System.Int32System.Int32
LongLong longlong System.Int64System.Int64
SingleSingle floatfloat System.SingleSystem.Single
DoubleDouble doubledouble System.DoubleSystem.Double
BooleanBoolean boolbool System.BooleanSystem.Boolean
CharChar charchar System.CharSystem.Char
DecimalDecimal decimaldecimal System.DecimalSystem.Decimal
sbytesbyte System.SByteSystem.SByte
ushortushort System.UInt16System.UInt16
uintuint System.UInt32System.UInt32
ulongulong System.UInt64System.UInt64
nicht CLS-konform
nicht CLS-konform
Syntax: Daten & TypenSyntax: Daten & Typen
Arrays: GrößenänderungenArrays: Größenänderungen
VBVB ReDim Preserve ...ReDim Preserve ...
C#C# n/an/a Framework-Klassen wie Framework-Klassen wie ArrayListArrayList
verwendenverwenden
Arrays: ErstellungArrays: Erstellung
VBVB Dim a(n) as IntegerDim a(n) as Integer erzeugt erzeugt n+1n+1 Elemente (0 ... n) ! Elemente (0 ... n) !
C#C# int [] a = new int[n];int [] a = new int[n]; erzeugt erzeugt nn Elemente (0 ... n-1) ! Elemente (0 ... n-1) !
Syntax: Daten & TypenSyntax: Daten & Typen
VariableninitialisierungVariableninitialisierung
VBVB automatisches Initialisieren mit automatisches Initialisieren mit 00 oder oder NothingNothing
nur bei Erzeugung (lokale Variablen!)nur bei Erzeugung (lokale Variablen!)
C#C# explizites Initialisieren notwendigexplizites Initialisieren notwendig
VBVB++
C#C#
Initialisieren bei Deklaration möglich:Initialisieren bei Deklaration möglich:
Dim i as Integer = 0Dim i as Integer = 0int i = 0;int i = 0;
Syntax: Daten & TypenSyntax: Daten & Typen VB unterstützt außerdem:VB unterstützt außerdem:
Steuerung expliziter Variablendeklaration:Steuerung expliziter Variablendeklaration:
Option Explicit { On | Off }Option Explicit { On | Off }
Steuerung von Typumwandlungen:Steuerung von Typumwandlungen:
Option Strict { On | Off }Option Strict { On | Off }
Steuerung des Stringvergleichs:Steuerung des Stringvergleichs:
Option Compare { Binary | Text }Option Compare { Binary | Text }
C# unterstützt außerdem:C# unterstützt außerdem:
?:?: ++++ ---- <<<< >>>> operator overloadingoperator overloading
public static MyType public static MyType operator –(MyType x){ ... } operator –(MyType x){ ... }
Testen auf Überlauf bei Testen auf Überlauf bei arithmetischen Operationen:arithmetischen Operationen:
checked / uncheckedchecked / unchecked
Syntax: Daten & TypenSyntax: Daten & Typen
VB: IIf(a,b,c)VB: IIf(a,b,c)
Demo
Syntax: FunktionenSyntax: Funktionen
DeklarationDeklaration
VBVB Function Function FunctionNameFunctionName((arg1arg1 as as TypeType, ... , ... argNargN as _ as _ TypeType) as ) as ReturnTypeReturnType ... ... Return Return someVariableOfReturnTypesomeVariableOfReturnTypeEnd Function End Function
Sub Sub ProcedureNameProcedureName((arg1arg1 as as TypeType, ... , ... argNargN as as TypeType)) ... ...End SubEnd Sub
C#C# ReturnType ReturnType FunctionNameFunctionName((Type arg1Type arg1, ... , ... Type argNType argN)){{ ... ... return return someVariableOfReturnType;someVariableOfReturnType;
}}
Syntax: FunktionenSyntax: FunktionenSelect Case / switchSelect Case / switch
VBVB Select Case iSelect Case i
Case "Frank", "Michael" To "Paul"Case "Frank", "Michael" To "Paul"
Console.WriteLine("Frank's group")Console.WriteLine("Frank's group")
Case oCase o
Console.WriteLine("It's John")Console.WriteLine("It's John")
Case ElseCase Else
Console.WriteLine("S.o. else")Console.WriteLine("S.o. else")
End SelectEnd Select
C#C# switch(i) {switch(i) {
case "Frank" : case "Frank" :
case "Michael" :case "Michael" :
......
case "Paul" :case "Paul" :
Console.WriteLine("Frank's group"); break;Console.WriteLine("Frank's group"); break;
case "John" :case "John" :
Console.WriteLine("John"); break;Console.WriteLine("John"); break;
default:default:
Console.WriteLine("S.o. else"); break;Console.WriteLine("S.o. else"); break;
}}
Demo
Syntax: FunktionenSyntax: Funktionen
VerschiedenesVerschiedenesVBVB Vorhandensein von Vorhandensein von ReturnReturn in allen in allen
Rückkehrzweigen einer Funktion wird nicht Rückkehrzweigen einer Funktion wird nicht geprüftgeprüft
Unterstützung optionaler ParameterUnterstützung optionaler Parameter OLE Automation!OLE Automation!
Unterstützung von ModulenUnterstützung von Modulen Variablen & Funktionen Assembly-globalVariablen & Funktionen Assembly-global
SharedShared members: Zugriff über Typ members: Zugriff über Typ oderoder InstanzInstanz
Standardsichtbarkeit in Klassen: Standardsichtbarkeit in Klassen: PublicPublic
C#C# staticstatic members: Zugriff nur über Typ members: Zugriff nur über Typ Standardsichtbarkeit in Klassen: Standardsichtbarkeit in Klassen: privateprivate
Demo
Syntax: ObjekteSyntax: Objekte
KonstruktorenKonstruktorenVBVB Public Class AClassPublic Class AClass
Public Sub New(ByVal n as String)Public Sub New(ByVal n as String) ...... End Sub End Sub ... ...End ClassEnd Class
C#C# public class AClass public class AClass {{ public AClass(string n) { ... }public AClass(string n) { ... } ......}}
Aktuelle Instanz referenzierenAktuelle Instanz referenzierenVBVB MeMe
C#C# thisthis
Syntax: ObjekteSyntax: ObjekteDestruktorenDestruktorenVBVB Protected Overrides Sub Finalize()Protected Overrides Sub Finalize()
......
C#C# ~AClass()~AClass(){ ... }{ ... }
Garbage Collector Garbage Collector nichtdeterministische Finalisierung nichtdeterministische Finalisierung
besser: besser: IDisposable.Dispose()IDisposable.Dispose() zur zur expliziten Freigabe von Ressourcenexpliziten Freigabe von Ressourcen in C# autom. Scoping durch in C# autom. Scoping durch usingusing::
using (Font myFont=new Font(...))using (Font myFont=new Font(...)) { ... } { ... }
Syntax: ObjekteSyntax: ObjekteVererbung vs. Interface-ImplementationVererbung vs. Interface-ImplementationVBVB Public Class DClassPublic Class DClass
Inherits BClass Inherits BClass Implements IInt Implements IInt
Welche Methode implementiert welche?Welche Methode implementiert welche?Sub X() Implements IInt.YSub X() Implements IInt.Y
eine Methode kann vielfach implementieren:eine Methode kann vielfach implementieren:Sub X() Implements IInt1.Y, IInt2.ZSub X() Implements IInt1.Y, IInt2.Z
C#C# public class DClass : BClass, IIntpublic class DClass : BClass, IInt explizite Interface-Methoden-Implementation:explizite Interface-Methoden-Implementation:
int IInt.X();int IInt.X();(Cast auf Interface nötig; kein (Cast auf Interface nötig; kein public/private/... erlaubt!)public/private/... erlaubt!)
Syntax: ObjekteSyntax: ObjekteSchlüsselwörterSchlüsselwörterVBVB MustInherit, NotInheritable, MustInherit, NotInheritable,
Overridable, Overrides, Shadows, ...Overridable, Overrides, Shadows, ...
C#C# abstract, sealed, virtual, override, abstract, sealed, virtual, override, new, ...new, ...
Konstruktor der Basisklasse aufrufenKonstruktor der Basisklasse aufrufenVBVB Public Sub New(ByVal n as String)Public Sub New(ByVal n as String)
MyBase.New()MyBase.New() ......End SubEnd Sub
C#C# public AClass() : base()public AClass() : base(){ ... }{ ... } impliziter Aufruf des Default-C'torsimpliziter Aufruf des Default-C'tors
Syntax: ObjekteSyntax: Objekte
EventsEvents
VBVB Dim WithEvents o as EventSource ...Dim WithEvents o as EventSource ...Event Happened(...) ...Event Happened(...) ...RaiseEvent Happened() ...RaiseEvent Happened() ...Sub hendl() Handles o.Happened ...Sub hendl() Handles o.Happened ...
• Delegates (s. C#)Delegates (s. C#)
C#C# public delegate void public delegate void HappenedHndl(object sender, EventArgs e); HappenedHndl(object sender, EventArgs e);public event HappenedHndl Happened; ...public event HappenedHndl Happened; ...Happened(this, eventargs); ...Happened(this, eventargs); ...public void sthHappened(object s, EventArgs a);public void sthHappened(object s, EventArgs a);o.Happened += new HappenedHndl(sthHappened);o.Happened += new HappenedHndl(sthHappened);
Syntax: ObjekteSyntax: Objekte
VerschiedenesVerschiedenesVBVB unterstütztunterstützt WithWith-Konstrukt:-Konstrukt:
With myObj With myObj .SomeFct(x,y) .SomeFct(x,y) .val = 42 .val = 42 End With End With
Unterstützung von "Legacy"-VB-Anweisungen Unterstützung von "Legacy"-VB-Anweisungen im Namensraum im Namensraum Microsoft.VisualBasicMicrosoft.VisualBasic
bequemes Verwenden von Late Bindingbequemes Verwenden von Late Binding ImportsImports gewährt Zugriff auf Namensräume gewährt Zugriff auf Namensräume
undund Objekte Objekte
C#C# unterstützt Parameter vom Typ unterstützt Parameter vom Typ outout
Syntax: VerschiedenesSyntax: Verschiedenes
Unsafe CodeUnsafe Code
VBVB n/an/a
C#C# Zeiger etc. möglich:Zeiger etc. möglich:
unsafe void Foo() {unsafe void Foo() {
char* buf = stackalloc char[256]; ... }char* buf = stackalloc char[256]; ... }
nicht durch die CLR verifizierbarnicht durch die CLR verifizierbar Ausführung nur unter "verschärften" Ausführung nur unter "verschärften"
Sicherheitsbedingungen möglichSicherheitsbedingungen möglich
Syntax: VerschiedenesSyntax: Verschiedenes
DokumentationDokumentation
VBVB keine besondere Unterstützungkeine besondere Unterstützung manuelles Erstellen von Hilfe-Dateienmanuelles Erstellen von Hilfe-Dateien Add-Ins (Add-Ins (IntelliDocIntelliDoc)) V.Next ...V.Next ...
C#C# Spezielle Tags für XML-Dokumentation:Spezielle Tags für XML-Dokumentation:
/// <summary> Erste Klasse! </summary>/// <summary> Erste Klasse! </summary>/// <seealso cref="Class2"/>/// <seealso cref="Class2"/>
Generieren von Online-DokumentationGenerieren von Online-Dokumentation
Demo
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Syntax, Gemeinsamkeiten, Syntax, SonstigesSonstiges
MigrationMigration ZusammenfassungZusammenfassung
SonstigesSonstigesClass ViewClass View
VBVB StandardStandard C#C# erweiterterweitert
SonstigesSonstiges
Echtzeit-SyntaxkontrolleEchtzeit-SyntaxkontrolleVBVB Code ValidationCode Validation
Background Compile (entdeckt Build Errors Background Compile (entdeckt Build Errors zur Entwurfszeit!)zur Entwurfszeit!)
C#C# Code ValidationCode Validation
VerschiedenesVerschiedenesVBVB Automatische Automatische End ... End ... -Blockanweisungen-Blockanweisungen
Automatisches Einrücken von CodeAutomatisches Einrücken von Code Automatische Groß-/KleinschreibungAutomatische Groß-/Kleinschreibung
C#C# Automatische Automatische {}{} -Klammerpaare -Klammerpaare Automatisches Einrücken (begrenzt)Automatisches Einrücken (begrenzt)
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Syntax, SonstigesGemeinsamkeiten, Syntax, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
MigrationMigration
VB 6VB 6VB .NETVB .NET
VB6 VB6 VB .NET VB .NET
3 Upgrade-Strategien:3 Upgrade-Strategien: komplettekomplette Neuimplementierung in .NET Neuimplementierung in .NET komplette Portierungkomplette Portierung
alte Programmarchitektur bleibt intaktalte Programmarchitektur bleibt intakt
MischlösungMischlösung auf bestehenden Code aufbauenauf bestehenden Code aufbauen VB 6-Komponenten VB 6-Komponenten
weiterverwenden, .NET-Komponenten weiterverwenden, .NET-Komponenten sinnvoll darauf aufsetzensinnvoll darauf aufsetzen
später Schritt für Schritt migrierenspäter Schritt für Schritt migrieren
VB6 VB6 VB .NET VB .NET
SieSie entscheiden: entscheiden: Wie sieht Ihre Anwendungsarchitektur aus?Wie sieht Ihre Anwendungsarchitektur aus? Handelt es sich um eine Neuentwicklung Handelt es sich um eine Neuentwicklung
oder soll die Applikation nur noch gewartet oder soll die Applikation nur noch gewartet werden?werden?
Machen Sie einen Upgrade-Plan!Machen Sie einen Upgrade-Plan! Welche Aspekte/Teile Ihrer Anwendung Welche Aspekte/Teile Ihrer Anwendung
gewinnen "added value" durch .NET?gewinnen "added value" durch .NET? Wie kann die bestehende Anwendung für Wie kann die bestehende Anwendung für
das Upgrade "fit" gemacht werden?das Upgrade "fit" gemacht werden?
VB6 VB6 VB .NET VB .NET
Upgrade-Technologien:Upgrade-Technologien:
Code-MigrationCode-Migration Upgrade WizardUpgrade Wizard Sourcecode AnalyzerSourcecode Analyzer Tools Tools
(Dritthersteller)(Dritthersteller) Application MiningApplication Mining Tools (Dritthersteller) Tools (Dritthersteller)
InteroperabilitätInteroperabilität COM Interop COM Interop Platform InvokePlatform Invoke (P/ (P/InvokeInvoke))
VB6 VB6 VB .NET VB .NET Demo
VB6 VB6 VB .NET VB .NET
Weiterführende Infos im Internet:Weiterführende Infos im Internet:
MSDNMSDN®® Website: Website: http://msdn.microsoft.com/http://msdn.microsoft.com/
VB .NET Upgrade Websites:VB .NET Upgrade Websites: http://msdn.microsoft.com/vbasic/technical/http://msdn.microsoft.com/vbasic/technical/
upgrade/guide.aspupgrade/guide.asp http://msdn.microsoft.com/vstudio/nextgen/http://msdn.microsoft.com/vstudio/nextgen/
Technology/vbupgrade.aspTechnology/vbupgrade.asp http://msdn.microsoft.com/library/techart/http://msdn.microsoft.com/library/techart/
VB 6tovbdotnet.htmVB 6tovbdotnet.htm
VB6 VB6 VB .NET VB .NETWeiterführende Informationen – Bücher:Weiterführende Informationen – Bücher:
Ed Robinson, Michael Bond, Ian Ed Robinson, Michael Bond, Ian Oliver:Oliver:"Upgrading Microsoft Visual Basic "Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET"6.0 to Microsoft Visual Basic .NET"Microsoft Press; Microsoft Press; ISBN 073561587XISBN 073561587X""Von Microsoft Visual Basic 6.0 Von Microsoft Visual Basic 6.0 nach Microsoft Visual Basic.NET" nach Microsoft Visual Basic.NET" Microsoft Press; Microsoft Press; ISBN 3860636669ISBN 3860636669
Dan Appleman: Dan Appleman: "Moving to VB.NET""Moving to VB.NET"Apress; ISBN: 1893115976Apress; ISBN: 1893115976
MigrationMigration
JavaJavaVisual C#Visual C#
Java Java C# C#
3 Wege zu .NET für Java-Programmierer:3 Wege zu .NET für Java-Programmierer:
VJ++ 6.0 COM-Anwendungen: COM VJ++ 6.0 COM-Anwendungen: COM InteropInterop
Visual J# .NET: Java-Sprache für .NET Visual J# .NET: Java-Sprache für .NET (erzeugt MSIL)(erzeugt MSIL)
Java Language Conversion Assistant Java Language Conversion Assistant (JLCA): Sourcecode-Migration (JLCA): Sourcecode-Migration Java Java C# C#
Java Java C# C#
Java Language Conversion AssistantJava Language Conversion Assistant aktuell: Beta2 (aktuell: Beta2 (
http://msdn.microsoft.com/vstudio/downloads/jca/default.asphttp://msdn.microsoft.com/vstudio/downloads/jca/default.asp)) konvertiert automatischkonvertiert automatisch
Java Java C# C# JSP JSP ASP.NET (final version) ASP.NET (final version) J2EE J2EE .NET (ArtinSoft, MS-Partner) .NET (ArtinSoft, MS-Partner)
Integration in Visual Studio .NETIntegration in Visual Studio .NET unterstützt JDK 1.1.4unterstützt JDK 1.1.4
Java Java C# C# Demo
AgendaAgenda
Das .NET FrameworkDas .NET Framework Visual Basic .NET: ÜberblickVisual Basic .NET: Überblick Visual C# .NET: ÜberblickVisual C# .NET: Überblick Vergleich der SprachenVergleich der Sprachen
Gemeinsamkeiten, Syntax, SonstigesGemeinsamkeiten, Syntax, Sonstiges
MigrationMigration ZusammenfassungZusammenfassung
ZusammenfassungZusammenfassungHighlightsHighlightsVBVB CLS-konformCLS-konform
gute Unterstützung von OLE Automationgute Unterstützung von OLE Automation Background CompileBackground Compile beim Editieren beim Editieren einfache Event-Syntaxeinfache Event-Syntax weitgehende automatische Codeformatierungweitgehende automatische Codeformatierung
C#C# "Sprache des .NET Framework""Sprache des .NET Framework" erzwingt Programmierdisziplin erzwingt Programmierdisziplin XML-DokumentationXML-Dokumentation ermöglicht "unsicheren" Codeermöglicht "unsicheren" Code
ZusammenfassungZusammenfassung
Naheliegende Migrationspfade:Naheliegende Migrationspfade: Visual Basic 6 Visual Basic 6 Visual Basic .NET Visual Basic .NET C/C++, Java C/C++, Java Visual C# .NET Visual C# .NET
VB .NET ist vollwertige .NET-SpracheVB .NET ist vollwertige .NET-Sprache kein Grund für kein Grund für
Minderwertigkeitskomplexe mehr! Minderwertigkeitskomplexe mehr! Base Class Library bestimmt Base Class Library bestimmt
verfügbare Funktionalitätverfügbare Funktionalität Wahl der Sprache für 95% der Probleme Wahl der Sprache für 95% der Probleme
irrelevantirrelevant
ZusammenfassungZusammenfassung
Sie haben die QSie haben die Q
VBVB C#C#
..NNEETT
Wahl!Wahl!Sie haben die QuSie haben die QuSie haben die Sie haben die
Fragen?Fragen?
Weitere InformationenWeitere Informationen INFO: "Differences Between Visual Basic .NET and Visual INFO: "Differences Between Visual Basic .NET and Visual
C# .NET" White Paper Is Available (Q308470)C# .NET" White Paper Is Available (Q308470)http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308470470
Daniel Appleman "Visual Basic .NET or C#...Which to Choose?"Daniel Appleman "Visual Basic .NET or C#...Which to Choose?"http://www.desaware.com/Ebook2L2.htmhttp://www.desaware.com/Ebook2L2.htm
Eric Gunnerson "A Programmer's Introduction to C#", Apress Eric Gunnerson "A Programmer's Introduction to C#", Apress 20012001
Daniel Appleman "Moving to VB.NET: Strategies, Concepts, and Daniel Appleman "Moving to VB.NET: Strategies, Concepts, and Code", Apress 2001Code", Apress 2001
Bernd Marquardt "Performance in .NET", XML in Action 2002, Bernd Marquardt "Performance in .NET", XML in Action 2002, PotsdamPotsdamhttp://213.178.67.35/events/xmldevcon/Nachlese/Slides/N/N7.ziphttp://213.178.67.35/events/xmldevcon/Nachlese/Slides/N/N7.zip
VB .NET Upgrade GuideVB .NET Upgrade Guidehttp://msdn.microsoft.com/vbasic/techinfo/articles/http://msdn.microsoft.com/vbasic/techinfo/articles/upgrade/guide.aspupgrade/guide.asp
Java Language Conversion AssistantJava Language Conversion Assistanthttp://msdn.microsoft.com/vstudio/downloads/jca/default.asphttp://msdn.microsoft.com/vstudio/downloads/jca/default.asp
Allgemeine InformationenAllgemeine Informationen
Jeffrey Richter:Jeffrey Richter:"Applied Microsoft .NET "Applied Microsoft .NET Framework Programming"Framework Programming"Microsoft Press;Microsoft Press;ISBN: 0735614229 ISBN: 0735614229
Ralf Westphal: Ralf Westphal: ".NET kompakt"".NET kompakt"Spektrum Akad. Vlg.; Spektrum Akad. Vlg.; ISBN: ISBN: 3827411858 3827411858
Microsoft’s Microsoft’s VisionVision
EmpowerEmpowerpeoplepeople
throughthroughsoftwaresoftwareany time, any place, and on any device.any time, any place, and on any device.
greatgreat