SlideShare ist ein Scribd-Unternehmen logo

Einführung in .NET mit C#

1 von 45
Downloaden Sie, um offline zu lesen
Einführung in C#




Präsentation von:
Georg Hinkel
Microsoft Student Partner
KIT Karlsruhe
Georg.hinkel@studentpartners.de
2




                         Agenda
• .NET Architektur, Terminologie
• Syntax C#
  – Kontrollstrukturen, Namenskonventionen
  – Properties
  – Delegates, Events
• Werttypen vs. Referenztypen


                Einführung in .NET und C# - Georg Hinkel
Grober Aufbau der Plattform und Klärung der Begriffe
Architektur & Terminologie
4




                          Architektur
                                Programmiersprache (Standard: Common Language
                                Specification, CLS), e.g. C#, Visual Basic


                                IL-Code (Früher Microsoft Intermediate Language)
                                Heute meist nur Intermediate Language (IL)


                                Virtuelle Maschine, die den IL-Code ausführt
                                Standardimplementierung:
                                Common Language Runtime (CLR)
Bildquelle: Wikipedia




                        Einführung in .NET und C# - Georg Hinkel
5




   Common Language Specification
• Definiert den gemeinsamen Nenner aller .NET-
  Sprachen
  – Einfachvererbung (Mehrfachvererbung nicht erlaubt)
  – Common Type System
     • Definiert Basisdatentypen
        – Int32 ist 32 bit lang, Int64 64 bit lang
        – Zeichenketten codiert in Unicode 16 „Little Endian“
  – Properties, Delegates, Events, u.a. (kommt später)

                     Einführung in .NET und C# - Georg Hinkel
6




         Intermediate Language
• Stackbasierter Bytecode
• Aus den fertigen Kompilaten direkt ablesbar
  – Mit Spezialprogrammen (.NET Reflector) Quellcode
    rekonstruierbar
  – Techniken um Rekonstruktion des Quellcodes zu
    verhindern notwendig



                 Einführung in .NET und C# - Georg Hinkel
Anzeige

Recomendados

Más contenido relacionado

Was ist angesagt?

The distinctive characteristics of foreign language teachers
The distinctive characteristics of foreign language teachers The distinctive characteristics of foreign language teachers
The distinctive characteristics of foreign language teachers Fariba Chamani
 
Introduction to gdb
Introduction to gdbIntroduction to gdb
Introduction to gdbOwen Hsu
 
Differentiated instruction in the english language classroom a case for integ...
Differentiated instruction in the english language classroom a case for integ...Differentiated instruction in the english language classroom a case for integ...
Differentiated instruction in the english language classroom a case for integ...H. R. Marasabessy
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계chcbaram
 
Understand more about C
Understand more about CUnderstand more about C
Understand more about CYi-Hsiu Hsu
 
ESL501 Origin of Curriculum Design Presentation
ESL501 Origin of Curriculum Design PresentationESL501 Origin of Curriculum Design Presentation
ESL501 Origin of Curriculum Design PresentationKaitlyn Marie
 
Register Allocation
Register AllocationRegister Allocation
Register AllocationEelco Visser
 
Adapting materials
Adapting materialsAdapting materials
Adapting materialsduvan92
 
An Introduction to PC-Lint
An Introduction to PC-LintAn Introduction to PC-Lint
An Introduction to PC-LintRalf Holly
 
Teaching listening and speaking
Teaching listening and speakingTeaching listening and speaking
Teaching listening and speakingasavitski
 
الدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdf
الدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdfالدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdf
الدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdfMr Bounab Samir
 
How to find_vulnerability_in_software
How to find_vulnerability_in_softwareHow to find_vulnerability_in_software
How to find_vulnerability_in_softwaresanghwan ahn
 
Conan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersConan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersUilian Ries
 
Communicative approach presentation
Communicative approach presentationCommunicative approach presentation
Communicative approach presentationSara
 
Providing for effective teaching (chapter 7 curriculum development in Languag...
Providing for effective teaching (chapter 7 curriculum development in Languag...Providing for effective teaching (chapter 7 curriculum development in Languag...
Providing for effective teaching (chapter 7 curriculum development in Languag...louth sran
 
Performance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux KernelPerformance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux Kernellcplcp1
 
Basis of Materials development.pptx
Basis of Materials development.pptxBasis of Materials development.pptx
Basis of Materials development.pptxAREEJ ALDAEJ
 

Was ist angesagt? (20)

The distinctive characteristics of foreign language teachers
The distinctive characteristics of foreign language teachers The distinctive characteristics of foreign language teachers
The distinctive characteristics of foreign language teachers
 
Introduction to gdb
Introduction to gdbIntroduction to gdb
Introduction to gdb
 
LLVM
LLVMLLVM
LLVM
 
Differentiated instruction in the english language classroom a case for integ...
Differentiated instruction in the english language classroom a case for integ...Differentiated instruction in the english language classroom a case for integ...
Differentiated instruction in the english language classroom a case for integ...
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
Understand more about C
Understand more about CUnderstand more about C
Understand more about C
 
ESL501 Origin of Curriculum Design Presentation
ESL501 Origin of Curriculum Design PresentationESL501 Origin of Curriculum Design Presentation
ESL501 Origin of Curriculum Design Presentation
 
Register Allocation
Register AllocationRegister Allocation
Register Allocation
 
Adapting materials
Adapting materialsAdapting materials
Adapting materials
 
Situational syllabi
Situational syllabiSituational syllabi
Situational syllabi
 
An Introduction to PC-Lint
An Introduction to PC-LintAn Introduction to PC-Lint
An Introduction to PC-Lint
 
kdump: usage and_internals
kdump: usage and_internalskdump: usage and_internals
kdump: usage and_internals
 
Teaching listening and speaking
Teaching listening and speakingTeaching listening and speaking
Teaching listening and speaking
 
الدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdf
الدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdfالدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdf
الدليل الديداكتيكي للغة الإنجليزية للسنة الثالثة.pdf
 
How to find_vulnerability_in_software
How to find_vulnerability_in_softwareHow to find_vulnerability_in_software
How to find_vulnerability_in_software
 
Conan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersConan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for Developers
 
Communicative approach presentation
Communicative approach presentationCommunicative approach presentation
Communicative approach presentation
 
Providing for effective teaching (chapter 7 curriculum development in Languag...
Providing for effective teaching (chapter 7 curriculum development in Languag...Providing for effective teaching (chapter 7 curriculum development in Languag...
Providing for effective teaching (chapter 7 curriculum development in Languag...
 
Performance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux KernelPerformance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux Kernel
 
Basis of Materials development.pptx
Basis of Materials development.pptxBasis of Materials development.pptx
Basis of Materials development.pptx
 

Destacado

Einführung in .NET
Einführung in .NETEinführung in .NET
Einführung in .NETAndreas Heil
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best PracticesGFU Cyrus AG
 
C# für Fortgeschrittene
C# für FortgeschritteneC# für Fortgeschrittene
C# für Fortgeschrittenemspgermany
 
Los fósiles (1)
Los fósiles (1)Los fósiles (1)
Los fósiles (1)DiazFlor
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8chmoser79
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining ClassesIntro C# Book
 
0. Course Introduction
0. Course Introduction0. Course Introduction
0. Course IntroductionIntro C# Book
 
C# Tutorial
C# Tutorial C# Tutorial
C# Tutorial Jm Ramos
 
.NET and C# Introduction
.NET and C# Introduction.NET and C# Introduction
.NET and C# IntroductionSiraj Memon
 
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental PrinciplesIntro C# Book
 
What is software engineering
What is software engineeringWhat is software engineering
What is software engineeringJennifer Polack
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net frameworkArun Prasad
 
10 books that every developer must read
10 books that every developer must read10 books that every developer must read
10 books that every developer must readGanesh Samarthyam
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and GraphsIntro C# Book
 
Visualising Data with Code
Visualising Data with CodeVisualising Data with Code
Visualising Data with CodeRi Liu
 
[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides Java[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides JavaKai Wähner
 
Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tplDavidT27
 

Destacado (20)

Einführung in .NET
Einführung in .NETEinführung in .NET
Einführung in .NET
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
 
C# für Fortgeschrittene
C# für FortgeschritteneC# für Fortgeschrittene
C# für Fortgeschrittene
 
Los fósiles (1)
Los fósiles (1)Los fósiles (1)
Los fósiles (1)
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining Classes
 
0. Course Introduction
0. Course Introduction0. Course Introduction
0. Course Introduction
 
C# basics
 C# basics C# basics
C# basics
 
08. Numeral Systems
08. Numeral Systems08. Numeral Systems
08. Numeral Systems
 
C# Tutorial
C# Tutorial C# Tutorial
C# Tutorial
 
.NET and C# Introduction
.NET and C# Introduction.NET and C# Introduction
.NET and C# Introduction
 
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles
 
What is software engineering
What is software engineeringWhat is software engineering
What is software engineering
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
 
10 books that every developer must read
10 books that every developer must read10 books that every developer must read
10 books that every developer must read
 
Cloud History 101
Cloud History 101Cloud History 101
Cloud History 101
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and Graphs
 
Visualising Data with Code
Visualising Data with CodeVisualising Data with Code
Visualising Data with Code
 
[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides Java[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides Java
 
Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tpl
 

Ähnlich wie Einführung in .NET mit C#

LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)NETUserGroupBern
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRAlexander Hundt
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & DominoUlrich Krause
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1DraphonyGames
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for BeginnersUlrich Krause
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...BATbern
 
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Martin Gfeller
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerNETUserGroupBern
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsRobin Sedlaczek
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataDai Yang
 
Inter Prozedurale Zeigeranalyse
Inter Prozedurale ZeigeranalyseInter Prozedurale Zeigeranalyse
Inter Prozedurale ZeigeranalyseTim Furche
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...Robin Sedlaczek
 

Ähnlich wie Einführung in .NET mit C# (20)

.NET und jetzt!
.NET und jetzt!.NET und jetzt!
.NET und jetzt!
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)
 
C++ kompakt
C++ kompaktC++ kompakt
C++ kompakt
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen IBit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Enterprise JS
Enterprise JS Enterprise JS
Enterprise JS
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
 
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio Extensions
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
 
Inter Prozedurale Zeigeranalyse
Inter Prozedurale ZeigeranalyseInter Prozedurale Zeigeranalyse
Inter Prozedurale Zeigeranalyse
 
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAYPLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
 

Mehr von mspgermany

Windows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodetWindows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodetmspgermany
 
Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010mspgermany
 
Einführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNAEinführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNAmspgermany
 
Office-Programmierung mit VBA
Office-Programmierung mit VBAOffice-Programmierung mit VBA
Office-Programmierung mit VBAmspgermany
 
Windows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-VWindows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-Vmspgermany
 
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – MöglichkeitenWindows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeitenmspgermany
 
Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2mspgermany
 
Mit Stil ans Ziel
Mit Stil ans ZielMit Stil ans Ziel
Mit Stil ans Zielmspgermany
 
Präsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint KaraokePräsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint Karaokemspgermany
 
Windows Phone 7
Windows Phone 7Windows Phone 7
Windows Phone 7mspgermany
 
Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7mspgermany
 
Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7mspgermany
 
Usergroup 02 Berlin Surface
Usergroup 02 Berlin SurfaceUsergroup 02 Berlin Surface
Usergroup 02 Berlin Surfacemspgermany
 
Usergroup02 Berlin IE8
Usergroup02 Berlin IE8Usergroup02 Berlin IE8
Usergroup02 Berlin IE8mspgermany
 

Mehr von mspgermany (14)

Windows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodetWindows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodet
 
Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010
 
Einführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNAEinführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNA
 
Office-Programmierung mit VBA
Office-Programmierung mit VBAOffice-Programmierung mit VBA
Office-Programmierung mit VBA
 
Windows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-VWindows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-V
 
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – MöglichkeitenWindows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
 
Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2
 
Mit Stil ans Ziel
Mit Stil ans ZielMit Stil ans Ziel
Mit Stil ans Ziel
 
Präsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint KaraokePräsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint Karaoke
 
Windows Phone 7
Windows Phone 7Windows Phone 7
Windows Phone 7
 
Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7
 
Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7
 
Usergroup 02 Berlin Surface
Usergroup 02 Berlin SurfaceUsergroup 02 Berlin Surface
Usergroup 02 Berlin Surface
 
Usergroup02 Berlin IE8
Usergroup02 Berlin IE8Usergroup02 Berlin IE8
Usergroup02 Berlin IE8
 

Einführung in .NET mit C#

  • 1. Einführung in C# Präsentation von: Georg Hinkel Microsoft Student Partner KIT Karlsruhe Georg.hinkel@studentpartners.de
  • 2. 2 Agenda • .NET Architektur, Terminologie • Syntax C# – Kontrollstrukturen, Namenskonventionen – Properties – Delegates, Events • Werttypen vs. Referenztypen Einführung in .NET und C# - Georg Hinkel
  • 3. Grober Aufbau der Plattform und Klärung der Begriffe Architektur & Terminologie
  • 4. 4 Architektur Programmiersprache (Standard: Common Language Specification, CLS), e.g. C#, Visual Basic IL-Code (Früher Microsoft Intermediate Language) Heute meist nur Intermediate Language (IL) Virtuelle Maschine, die den IL-Code ausführt Standardimplementierung: Common Language Runtime (CLR) Bildquelle: Wikipedia Einführung in .NET und C# - Georg Hinkel
  • 5. 5 Common Language Specification • Definiert den gemeinsamen Nenner aller .NET- Sprachen – Einfachvererbung (Mehrfachvererbung nicht erlaubt) – Common Type System • Definiert Basisdatentypen – Int32 ist 32 bit lang, Int64 64 bit lang – Zeichenketten codiert in Unicode 16 „Little Endian“ – Properties, Delegates, Events, u.a. (kommt später) Einführung in .NET und C# - Georg Hinkel
  • 6. 6 Intermediate Language • Stackbasierter Bytecode • Aus den fertigen Kompilaten direkt ablesbar – Mit Spezialprogrammen (.NET Reflector) Quellcode rekonstruierbar – Techniken um Rekonstruktion des Quellcodes zu verhindern notwendig Einführung in .NET und C# - Georg Hinkel
  • 7. 7 Common Language Runtime (CLR) • Virtuelle Maschine mit Laufzeitumgebung – Dadurch plattformunabhängig – CLR nur für Windows erhältlich – Mono Projekt: CLR für Linux Einführung in .NET und C# - Georg Hinkel
  • 8. 8 Auswahl der .NET-Sprachen • C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt • Cω, Asml, Spec#, Polyphonic C# – Forschungssprachen von Microsoft Research • GrGen.NET – Programmierung mit Graphen • Boo, J#, Jscript.NET, Clarion.NET u.v.m Einführung in .NET und C# - Georg Hinkel
  • 9. 9 Auswahl der .NET-Sprachen • C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt • Cω, Asml, Spec#, Polyphonic C# – Forschungssprachen von Microsoft Research • GrGen.NET – Programmierung mit Graphen • Boo, J#, Jscript.NET, Clarion.NET u.v.m • …etwa 10-20 weitere Einführung in .NET und C# - Georg Hinkel
  • 10. 10 Auswahl der .NET-Sprachen • C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt • Cω, Asml, Spec#, Polyphonic C# matter“ „The language doesn‘t – Forschungssprachen von Microsoft Research Dan Appleman • GrGen.NET – Entwickelt am IPD/Uni Karlsruhe • Boo, J#, Jscript.NET, Clarion.NET u.v.m • …etwa 10-20 weitere Einführung in .NET und C# - Georg Hinkel
  • 11. 11 Zusammenfassung • Grobe Architektur ähnlich Java • Sprachvielfalt Einführung in .NET und C# - Georg Hinkel
  • 12. Syntax, Properties, Delegates, Generics, ValueTypes, Structs Syntax C#
  • 13. 13 Klassen • Hier kein Grundkurs der Objektorientierung (Zeit!) • Literatur: Galileo Openbook – http://openbook.galileocomputing.de/visual_csharp _2010/ – http://openbook.galileocomputing.de/oop/ Einführung in .NET und C# - Georg Hinkel
  • 14. 14 Klassen – Syntax in C# /// <summary> /// Nur zu Demonstrationszwecken /// </summary> public class A : B, ICalculator { public int Calc() { if (this.Id < 2) { return 0; } return 1; } } Einführung in .NET und C# - Georg Hinkel
  • 15. 15 Klassen – Syntax in C# Basisklasse Schnittstelle /// <summary> Klassenname /// Nur zu Demonstrationszwecken /// </summary> public class A : B, ICalculator { public int Calc() { if (this.Id < 2) { Methodendefinition return 0; } Property return 1; } } Einführung in .NET und C# - Georg Hinkel
  • 16. 16 Kontrollstrukturen • Bedingte einfache Sprünge – if-Anweisung • Schleifen – do/while-Schleifen – for-Schleifen • Iterierte Schleifen mit foreach • LINQ Einführung in .NET und C# - Georg Hinkel
  • 17. 17 Namenskonventionen Subjekt .NET Namensraum Pascal Case Klassennamen Pascal Case Methodennamen Pascal Case Klassenvariablen Camel Case Properties, Events Pascal Case Lokale Variablen Camel Case Schnittstellen Beginnen mit I • Pascal Case: Alle Worte groß geschrieben, ohne Leerzeichen • Camel Case: Wie Pascal Case, jedoch erster Buchstabe des ersten Wortes auch klein Einführung in .NET und C# - Georg Hinkel
  • 18. 18 Nomenklautur Objektorientierung allgemein .NET Klasse Klasse - Struktur/Struct - Delegate - Event/Ereignis Attribut Klassenvariable/Feld Feld Array - (Annotation in Java) Attribut - Property Methode Methode Funktion Funktion Einführung in .NET und C# - Georg Hinkel
  • 19. 19 Properties • „Eigenschaften“ eines Objekts – Getter/Setter-Paar – Automatisiert möglich • Bestandteil der CLS • Ähnlich Java „Beans-Architektur“ private string name; public string Name { get { return name; } set { name = value; } } Alternative Schreibweise (automatisiert): public string Name { get; set; } Einführung in .NET und C# - Georg Hinkel
  • 20. 20 Properties - Vorteile • Problem: Wieviel Berechnungsaufwand steckt hinter der Auswertung einer parameterlosen Funktion? • Semantischer Unterschied – Funktionen, die „nur“ Klassenvariablen zurückgeben – Funktionen, die „hohen“ Berechnungsaufwand für die Auswertung benötigen Einführung in .NET und C# - Georg Hinkel
  • 21. 21 Properties - Vorteile • Problem: Wieviel Berechnungsaufwand steckt hinter der Auswertung einer parameterlosen Funktion? • Semantischer Unterschied – Funktionen, die „nur“ Klassenvariablen zurückgeben – Funktionen, die „hohen“ Berechnungsaufwand für die Auswertung benötigen • Mit Properties: Syntaktischer Unterschied Einführung in .NET und C# - Georg Hinkel
  • 22. 22 Delegates • Ähnlich Funktionszeigern in C, nur mit Objekt • Ein Delegate ist eine Klasse, also ein Datentyp public delegate void Foovoid() • Verketten und Herauslösen möglich (e.g. Methode Delegate.Combine) • Bestandteil der CLS Einführung in .NET und C# - Georg Hinkel
  • 23. 23 Events • Ähnlich Klassenvariable, aber es sind nach außen nur die Operationen Verketten und Herauslösen möglich public event Foovoid FooHappened; • Bestandteil der CLS • Faktisch in der Sprache implementiertes Observer-Pattern („Beobachtermuster“) Einführung in .NET und C# - Georg Hinkel
  • 24. 24 Events – Konventionen (1) • Objektorientierter Ansatz – Parameter/Rückgabe als Event-Objekt – Events nur Void-Delegates (ohne Rückgabe) • Sender wird übergeben – Wiederverwendbarkeit der Handler-Methoden Einführung in .NET und C# - Georg Hinkel
  • 25. 25 Events – Konventionen (2) • Standarddelegates für Events: – Mit Parametern/Rückgabe public delegate void EventHandler<T as EventArgs>(object sender, T event) public event EventHandler<ResolveEntityEventArgs> ResolveEntityRequired; Manchmal noch alter Code ohne Generizität – Ohne Parameter public delegate void EventHandler(object sender, EventArgs event) public event EventHandler PropertyChanged; Einführung in .NET und C# - Georg Hinkel
  • 26. 26 Events - Anwendungen • Oberflächen – Windows Forms Button: 72 Events – WPF Button: 95 Events • MVC/MVP/MVVM – Saubere Implementierung des Observer-Patterns Einführung in .NET und C# - Georg Hinkel
  • 27. 27 Best Practise (1) • Properties + Observer private string _name; public string Name { get { return _name; } set { if (_name != value) { _name = value; OnNameChanged(EventArgs.Empty); } } } Einführung in .NET und C# - Georg Hinkel
  • 28. 28 Best Practise (2) • Properties + Observer protected virtual void OnNameChanged(EventArgs e) { EventHandler handler = NameChanged; if (handler != null) { handler.Invoke(this, e); } } public event EventHandler NameChanged; Einführung in .NET und C# - Georg Hinkel
  • 29. 29 Best Practise (2) • Properties + Observer protected virtual void OnNameChanged(EventArgs e) { EventHandler handler = NameChanged; if (handler != null) { handler(this, e); } } public event EventHandler NameChanged; Einführung in .NET und C# - Georg Hinkel
  • 31. 31 Werttypen, Referenztypen • Java: int, double, … primitive Typen – Keine Objekte – Verstoß gegen Objektorientierung! • .NET: Trennung Werttypen vs. Referenztypen – Vollständig objektorientiert – Automatisches Boxing/Unboxing Einführung in .NET und C# - Georg Hinkel
  • 32. 32 Referenztypen • Zugriff nur über Referenz • Eigentliches Objekt im Heap gespeichert • Variablen sind nur Zeiger  „normale Objekte“ Einführung in .NET und C# - Georg Hinkel
  • 33. 33 Werttypen (1) • Overhead für kleine Objekte zu hoch • Speicherung der Objekte „vor Ort“ im Stack – Boxing/Unboxing – Kein Zusätzlicher Speicherplatz notwendig (meist) – Werttypen sind immutable (unveränderlich) – Vererbung nicht möglich Einführung in .NET und C# - Georg Hinkel
  • 34. 34 Werttypen (2) • Definition eigener Werttypen möglich – Enumerationen: Definition mehrerer thematisch ähnlicher numerischer Konstanten – Structure: Wie Klassen, aber ohne Polymorphie • Structure erbt automatisch von ValueType • Implementierung von Schnittstellen trotzdem möglich • GetHashCode sollte überschrieben werden Einführung in .NET und C# - Georg Hinkel
  • 35. 35 Werttypen - Beispiel • Structure Point (System.Drawing.Point) Point p = window.Location; p.X += 20; Was passiert? Was wäre, wenn Point eine Referenzklasse wäre (Reference Type)? Einführung in .NET und C# - Georg Hinkel
  • 36. 36 Werttypen - Beispiel • Structure Point (System.Drawing.Point) Point p = window.Location; p.X += 20; window.Location = p; Was passiert? Was wäre, wenn Point eine Referenzklasse wäre (Reference Type)? Einführung in .NET und C# - Georg Hinkel
  • 37. 37 Enumerationen – Syntax in C# /// <summary> /// Defines the gender of a patient /// </summary> public enum Gender { Male, Female, Unknown } Einführung in .NET und C# - Georg Hinkel
  • 38. 38 Enumerationen – Syntax in C# /// <summary> /// Defines the gender of a patient /// </summary> public enum Gender : byte { Male , Female, Unknown } Einführung in .NET und C# - Georg Hinkel
  • 39. 39 Enumerationen – Syntax in C# /// <summary> /// Defines the gender of a patient /// </summary> [Flagged] public enum Gender : byte { Male = 2, Female = 4, Unknown = 1 } Einführung in .NET und C# - Georg Hinkel
  • 41. Vielen Dank für eure Aufmerksamkeit! Präsentation von: Georg Hinkel Microsoft Student Partner KIT Karlsruhe georg.hinkel@studentpartners.de
  • 42. 42 IT 4 Students Der Newsletter rund um Microsoft Angebote für Studierende Online: www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel
  • 43. 43 /TechStudent Online Facebook – das Portal für Geeks, Nerds und www.facebook.com/ alle, die es noch werden wollen techstudentgermany www.microsoft.de/techstuden t Einführung in .NET und C# - Georg Hinkel
  • 44. 44 MSDN AA MSDN AA = Microsoft Developer Network – Academic Alliance Entwicklungsumgebungen, Datenbanken, Betriebssysteme wie … Windows 7, Visio, Project, Visual Studio Ausstattung der angebotenen Software für alle immatrikulierten Studierenden und die Lehreinrichtung Online: www.msdnaa.de Einführung in .NET und C# - Georg Hinkel
  • 45. 45 DreamSpark Kostenloser Softwaredownload für alle Studierenden SDK, Visual Studio, Virtual PC, SQL Server und Co. Online: www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel