Easily get started programming using the ultra-versatile C# 7 and Visual Studio 2017
Beginning C# 7 Programming with Visual Studio 2017 is the beginner's ultimate guide to the world's most popular programming language. Whether you're new to programming entirely, or just new to C#, there has never been a better time to get started. The new C# 7 and Visual Studio 2017 updates feature a number of new tools and features that streamline the workflow, simplify the code, and make it easier than ever to build high-quality apps. This book walks you through everything you need to know, starting from the very basics, to have you programming in no time. You'll learn about variables, flow control, and object oriented programming, then move into Web and Windows programming as well as databases and XML. The companion website provides downloadable code examples, and practical Try It Out sections provide explicit, step-by-step instructions for writing your own useful, customizable code.
C# 7 can be used to build Windows applications, program Windows 10, and write Web apps when used alongside ASP.NET. With programming skills becoming de rigueur in fields far beyond the tech world, C# 7 is a great place to start building versatile, helpful skills. This book gets you started quickly and easily with instruction from a master-team of C# programmers.
* Learn how to program using the world's leading programming language
* Build smarter, faster apps using the latest features in C# 7 and Visual Studio 2017
* Find and fix bugs sooner, saving headaches down the line
* Integrate with all .NET Core, Azure applications, cloud services, Docker containers, and more
The world of programming can seem intimidating to a beginner, and the prospect of learning a whole new "language" can seem daunting. Beginning C# 7 Programming with Visual Studio 2017 demystifies the process and shows you how to bring your ideas to life.
Auflage
Sprache
Verlagsort
Dateigröße
ISBN-13
978-1-119-45872-2 (9781119458722)
Schweitzer Klassifikation
1 - Cover [Seite 1]
2 - Title Page [Seite 3]
3 - Copyright [Seite 4]
4 - About the Authors [Seite 5]
5 - About the Technical Editor [Seite 5]
6 - Credits [Seite 6]
7 - Acknowledgments [Seite 7]
8 - Contents [Seite 9]
9 - Introduction [Seite 23]
9.1 - Who This Book is for [Seite 24]
9.2 - What This Book Covers [Seite 24]
9.3 - How This Book is Structured [Seite 25]
9.3.1 - The C# Language (Chapters 1-13) [Seite 25]
9.3.2 - Windows Programming (Chapters 14-15) [Seite 26]
9.3.3 - Cloud and Cross-Platform Programming (Chapters 16-19) [Seite 26]
9.3.4 - Data Access (Chapters 20-23) [Seite 27]
9.3.5 - Additional Techniques (Chapters 24-25) [Seite 27]
9.4 - What you Need to use This Book [Seite 28]
9.5 - Conventions [Seite 28]
9.6 - Source Code [Seite 29]
9.7 - Errata [Seite 29]
10 - Part I: The C# Language [Seite 31]
10.1 - Chapter 1: Introducing C# [Seite 33]
10.1.1 - What is the .NET Framework? [Seite 34]
10.1.1.1 - What's in the .NET Framework? [Seite 34]
10.1.1.2 - .NET Standard and .NET Core [Seite 35]
10.1.1.3 - Writing Applications Using the .NET Framework and .NET Core [Seite 35]
10.1.1.3.1 - CIL and JIT [Seite 36]
10.1.1.3.2 - Assemblies [Seite 37]
10.1.1.3.3 - Managed Code [Seite 37]
10.1.1.3.4 - Garbage Collection [Seite 37]
10.1.1.3.5 - Fitting it Together [Seite 38]
10.1.1.3.6 - Linking [Seite 39]
10.1.2 - What Is C#? [Seite 39]
10.1.2.1 - Applications You Can Write with C# [Seite 40]
10.1.2.2 - C# in this Book [Seite 41]
10.1.3 - Visual Studio 2017 [Seite 41]
10.1.3.1 - Visual Studio 2017 Products [Seite 41]
10.1.3.2 - Solutions [Seite 42]
10.2 - Chapter 2: Writing a C# Program [Seite 45]
10.2.1 - The Visual Studio 2017 Development Environment [Seite 46]
10.2.2 - Console Applications [Seite 51]
10.2.2.1 - The Solution Explorer [Seite 54]
10.2.2.2 - The Properties Window [Seite 55]
10.2.2.3 - The Error List Window [Seite 55]
10.2.3 - Desktop Applications [Seite 56]
10.3 - Chapter 3: Variables and Expressions [Seite 63]
10.3.1 - Basic C# Syntax [Seite 64]
10.3.2 - Basic C# Console Application Structure [Seite 66]
10.3.3 - Variables [Seite 68]
10.3.3.1 - Simple Types [Seite 68]
10.3.3.2 - Variable Naming [Seite 73]
10.3.3.3 - Literal Values [Seite 73]
10.3.3.3.1 - Binary Literals and Digit Separators [Seite 74]
10.3.3.3.2 - String Literals [Seite 75]
10.3.4 - Expressions [Seite 76]
10.3.4.1 - Mathematical Operators [Seite 77]
10.3.4.2 - Assignment Operators [Seite 82]
10.3.4.3 - Operator Precedence [Seite 83]
10.3.4.4 - Namespaces [Seite 84]
10.4 - Chapter 4: Flow Control [Seite 89]
10.4.1 - Boolean Logic [Seite 90]
10.4.1.1 - Boolean Bitwise and Assignment Operators [Seite 92]
10.4.1.2 - Operator Precedence Updated [Seite 94]
10.4.2 - Branching [Seite 95]
10.4.2.1 - The Ternary Operator [Seite 95]
10.4.2.2 - The if Statement [Seite 95]
10.4.2.2.1 - Checking More Conditions Using if Statements [Seite 98]
10.4.2.3 - The switch Statement [Seite 99]
10.4.3 - Looping [Seite 102]
10.4.3.1 - do Loops [Seite 103]
10.4.3.2 - while Loops [Seite 105]
10.4.3.3 - for Loops [Seite 107]
10.4.3.4 - Interrupting Loops [Seite 108]
10.4.3.5 - Infinite Loops [Seite 109]
10.5 - Chapter 5: More about Variables [Seite 113]
10.5.1 - Type Conversion [Seite 114]
10.5.1.1 - Implicit Conversions [Seite 114]
10.5.1.2 - Explicit Conversions [Seite 116]
10.5.1.3 - Explicit Conversions Using the Convert Commands [Seite 118]
10.5.2 - Complex Variable Types [Seite 121]
10.5.2.1 - Enumerations [Seite 121]
10.5.2.1.1 - Defining Enumerations [Seite 122]
10.5.2.2 - Structs [Seite 126]
10.5.2.2.1 - Defining Structs [Seite 126]
10.5.2.3 - Arrays [Seite 129]
10.5.2.3.1 - Declaring Arrays [Seite 129]
10.5.2.3.2 - foreach Loops [Seite 132]
10.5.2.3.3 - Pattern Matching with switch case expression [Seite 132]
10.5.2.3.4 - Multidimensional Arrays [Seite 136]
10.5.2.3.5 - Arrays of Arrays [Seite 138]
10.5.3 - String Manipulation [Seite 139]
10.6 - Chapter 6: Functions [Seite 147]
10.6.1 - Defining and Using Functions [Seite 148]
10.6.1.1 - Return Values [Seite 150]
10.6.1.2 - Parameters [Seite 152]
10.6.1.2.1 - Parameter Matching [Seite 154]
10.6.1.2.2 - Parameter Arrays [Seite 154]
10.6.1.2.3 - Reference and Value Parameters [Seite 156]
10.6.1.2.4 - Out Parameters [Seite 159]
10.6.1.2.5 - Tuples [Seite 160]
10.6.2 - Variable Scope [Seite 161]
10.6.2.1 - Variable Scope in Other Structures [Seite 164]
10.6.2.2 - Parameters and Return Values versus Global Data [Seite 166]
10.6.2.3 - Local Functions [Seite 167]
10.6.3 - The Main() Function [Seite 168]
10.6.4 - Struct Functions [Seite 171]
10.6.5 - Overloading Functions [Seite 172]
10.6.6 - Using Delegates [Seite 174]
10.7 - Chapter 7: Debugging and Error Handling [Seite 179]
10.7.1 - Debugging in Visual Studio [Seite 180]
10.7.1.1 - Debugging in Nonbreak (Normal) Mode [Seite 180]
10.7.1.1.1 - Outputting Debugging Information [Seite 181]
10.7.1.1.2 - Tracepoints [Seite 186]
10.7.1.1.3 - Diagnostics Output Versus Tracepoints [Seite 188]
10.7.1.2 - Debugging in Break Mode [Seite 188]
10.7.1.2.1 - Entering Break Mode [Seite 188]
10.7.1.2.2 - Monitoring Variable Content [Seite 192]
10.7.1.2.3 - Stepping through Code [Seite 194]
10.7.1.2.4 - Immediate and Command Windows [Seite 196]
10.7.1.2.5 - The Call Stack Window [Seite 197]
10.7.2 - Error Handling [Seite 197]
10.7.2.1 - try.catch.finally [Seite 198]
10.7.2.2 - Throw Expressions [Seite 205]
10.7.2.3 - Listing and Configuring Exceptions [Seite 206]
10.8 - Chapter 8: Introduction to Object-Oriented Programming [Seite 209]
10.8.1 - What Is Object-Oriented Programming? [Seite 210]
10.8.1.1 - What Is an Object? [Seite 211]
10.8.1.1.1 - Properties and Fields [Seite 212]
10.8.1.1.2 - Methods [Seite 213]
10.8.1.2 - Everything's an Object [Seite 214]
10.8.1.3 - The Life Cycle of an Object [Seite 214]
10.8.1.3.1 - Constructors [Seite 214]
10.8.1.3.2 - Destructors [Seite 215]
10.8.1.4 - Static and Instance Class Members [Seite 215]
10.8.1.4.1 - Static Constructors [Seite 215]
10.8.1.4.2 - Static Classes [Seite 216]
10.8.2 - OOP Techniques [Seite 216]
10.8.2.1 - Interfaces [Seite 217]
10.8.2.1.1 - Disposable Objects [Seite 218]
10.8.2.2 - Inheritance [Seite 218]
10.8.2.3 - Polymorphism [Seite 221]
10.8.2.3.1 - Interface Polymorphism [Seite 222]
10.8.2.4 - Relationships between Objects [Seite 223]
10.8.2.4.1 - Containment [Seite 223]
10.8.2.4.2 - Collections [Seite 224]
10.8.2.5 - Operator Overloading [Seite 224]
10.8.2.6 - Events [Seite 225]
10.8.2.7 - Reference Types versus Value Types [Seite 225]
10.8.3 - OOP in Desktop Applications [Seite 226]
10.9 - Chapter 9: Defining Classes [Seite 233]
10.9.1 - Class Definitions in C# [Seite 234]
10.9.1.1 - Interface Definitions [Seite 236]
10.9.2 - System.Object [Seite 239]
10.9.3 - Constructors and Destructors [Seite 241]
10.9.3.1 - Constructor Execution Sequence [Seite 242]
10.9.4 - OOP Tools in Visual Studio [Seite 246]
10.9.4.1 - The Class View Window [Seite 246]
10.9.4.2 - The Object Browser [Seite 248]
10.9.4.3 - Adding Classes [Seite 249]
10.9.4.4 - Class Diagrams [Seite 250]
10.9.5 - Class Library Projects [Seite 252]
10.9.6 - Interfaces Versus Abstract Classes [Seite 256]
10.9.7 - Struct Types [Seite 258]
10.9.8 - Shallow Copying Versus Deep Copying [Seite 260]
10.10 - Chapter 10: Defining Class Members [Seite 263]
10.10.1 - Member Definitions [Seite 264]
10.10.1.1 - Defining Fields [Seite 264]
10.10.1.2 - Defining Methods [Seite 265]
10.10.1.3 - Defining Properties [Seite 266]
10.10.1.4 - Tuple Deconstruction [Seite 271]
10.10.1.5 - Refactoring Members [Seite 272]
10.10.1.6 - Automatic Properties [Seite 273]
10.10.2 - Additional Class Member Topics [Seite 274]
10.10.2.1 - Hiding Base Class Methods [Seite 274]
10.10.2.2 - Calling Overridden or Hidden Base Class Methods [Seite 276]
10.10.2.2.1 - The this Keyword [Seite 276]
10.10.2.3 - Using Nested Type Definitions [Seite 277]
10.10.3 - Interface Implementation [Seite 279]
10.10.3.1 - Implementing Interfaces in Classes [Seite 280]
10.10.3.1.1 - Explicit Interface Member Implementation [Seite 281]
10.10.3.1.2 - Additional Property Accessors [Seite 282]
10.10.4 - Partial Class Definitions [Seite 282]
10.10.5 - Partial Method Definitions [Seite 283]
10.10.6 - Example Application [Seite 285]
10.10.6.1 - Planning the Application [Seite 285]
10.10.6.1.1 - The Card Class [Seite 285]
10.10.6.1.2 - The Deck Class [Seite 285]
10.10.6.2 - Writing the Class Library [Seite 286]
10.10.6.2.1 - Adding the Suit and Rank Enumerations [Seite 287]
10.10.6.2.2 - Adding the Card Class [Seite 289]
10.10.6.2.3 - Adding the Deck Class [Seite 290]
10.10.6.3 - A Client Application for the Class Library [Seite 293]
10.10.7 - The Call Hierarchy Window [Seite 295]
10.11 - Chapter 11: Collections, Comparisons, and Conversions [Seite 299]
10.11.1 - Collections [Seite 300]
10.11.1.1 - Using Collections [Seite 301]
10.11.1.2 - Defining Collections [Seite 306]
10.11.1.3 - Indexers [Seite 307]
10.11.1.4 - Adding a Cards Collection to CardLib [Seite 309]
10.11.1.5 - Keyed Collections and IDictionary [Seite 312]
10.11.1.6 - Iterators [Seite 313]
10.11.1.7 - Iterators and Collections [Seite 318]
10.11.1.8 - Deep Copying [Seite 319]
10.11.1.9 - Adding Deep Copying to CardLib [Seite 320]
10.11.2 - Comparisons [Seite 322]
10.11.2.1 - Type Comparisons [Seite 322]
10.11.2.1.1 - Boxing and Unboxing [Seite 322]
10.11.2.1.2 - The is Operator [Seite 324]
10.11.2.2 - Pattern Matching with the is Operator Pattern Expression [Seite 327]
10.11.2.3 - Value Comparisons [Seite 328]
10.11.2.3.1 - Operator Overloading [Seite 328]
10.11.2.3.2 - Adding Operator Overloads to CardLib [Seite 332]
10.11.2.3.3 - The IComparable and IComparer Interfaces [Seite 338]
10.11.2.3.4 - Sorting Collections [Seite 339]
10.11.3 - Conversions [Seite 343]
10.11.3.1 - Overloading Conversion Operators [Seite 343]
10.11.3.2 - The as Operator [Seite 345]
10.12 - Chapter 12: Generics [Seite 349]
10.12.1 - What Are Generics? [Seite 350]
10.12.2 - Using Generics [Seite 351]
10.12.2.1 - Nullable Types [Seite 351]
10.12.2.1.1 - Operators and Nullable Types [Seite 352]
10.12.2.1.2 - The ?? Operator [Seite 353]
10.12.2.1.3 - The ?. Operator [Seite 354]
10.12.2.1.4 - Working with Nullable Types [Seite 355]
10.12.2.2 - The System.Collections.Generic Namespace [Seite 359]
10.12.2.2.1 - List [Seite 360]
10.12.2.2.2 - Sorting and Searching Generic Lists [Seite 361]
10.12.2.2.3 - Dictionary [Seite 367]
10.12.2.2.4 - Modifying CardLib to Use a Generic Collection Class [Seite 369]
10.12.3 - Defining Generic Types [Seite 369]
10.12.3.1 - Defining Generic Classes [Seite 370]
10.12.3.1.1 - The default Keyword [Seite 372]
10.12.3.1.2 - Constraining Types [Seite 372]
10.12.3.1.3 - Inheriting from Generic Classes [Seite 378]
10.12.3.1.4 - Generic Operators [Seite 379]
10.12.3.1.5 - Generic Structs [Seite 380]
10.12.3.2 - Defining Generic Interfaces [Seite 380]
10.12.3.3 - Defining Generic Methods [Seite 381]
10.12.3.4 - Defining Generic Delegates [Seite 382]
10.12.4 - Variance [Seite 383]
10.12.4.1 - Covariance [Seite 384]
10.12.4.2 - Contravariance [Seite 384]
10.13 - Chapter 13: Additional C# Techniques [Seite 389]
10.13.1 - The :: Operator and the Global Namespace Qualifier [Seite 390]
10.13.2 - Custom Exceptions [Seite 391]
10.13.2.1 - Adding Custom Exceptions to CardLib [Seite 392]
10.13.3 - Events [Seite 393]
10.13.3.1 - What Is an Event? [Seite 393]
10.13.3.2 - Handling Events [Seite 395]
10.13.3.3 - Defining Events [Seite 398]
10.13.3.3.1 - Multipurpose Event Handlers [Seite 401]
10.13.3.3.2 - The EventHandler and Generic EventHandler Types [Seite 404]
10.13.3.3.3 - Return Values and Event Handlers [Seite 404]
10.13.3.3.4 - Anonymous Methods [Seite 405]
10.13.4 - Expanding and Using CardLib [Seite 405]
10.13.5 - Attributes [Seite 414]
10.13.5.1 - Reading Attributes [Seite 414]
10.13.5.2 - Creating Attributes [Seite 415]
10.13.6 - Initializers [Seite 416]
10.13.6.1 - Object Initializers [Seite 417]
10.13.6.2 - Collection Initializers [Seite 419]
10.13.7 - Type Inference [Seite 422]
10.13.8 - Anonymous Types [Seite 424]
10.13.9 - Dynamic Lookup [Seite 428]
10.13.9.1 - The dynamic Type [Seite 429]
10.13.10 - Advanced Method Parameters [Seite 432]
10.13.10.1 - Optional Parameters [Seite 433]
10.13.10.1.1 - Optional Parameter Values [Seite 434]
10.13.10.1.2 - The OptionalAttribute Attribute [Seite 434]
10.13.10.1.3 - Optional Parameter Order [Seite 434]
10.13.10.2 - Named Parameters [Seite 434]
10.13.11 - Lambda Expressions [Seite 439]
10.13.11.1 - Anonymous Methods Recap [Seite 439]
10.13.11.2 - Lambda Expressions for Anonymous Methods [Seite 440]
10.13.11.3 - Lambda Expression Parameters [Seite 443]
10.13.11.4 - Lambda Expression Statement Bodies [Seite 444]
10.13.11.5 - Lambda Expressions as Delegates and Expression Trees [Seite 445]
10.13.11.6 - Lambda Expressions and Collections [Seite 446]
11 - Part II: Windows Programming [Seite 453]
11.1 - Chapter 14: Basic Desktop Programming [Seite 455]
11.1.1 - XAML [Seite 456]
11.1.1.1 - Separation of Concerns [Seite 457]
11.1.1.2 - XAML in Action [Seite 457]
11.1.1.2.1 - Namespaces [Seite 458]
11.1.1.2.2 - Code-Behind Files [Seite 459]
11.1.2 - The Playground [Seite 459]
11.1.2.1 - WPF Controls [Seite 460]
11.1.2.2 - Properties [Seite 462]
11.1.2.2.1 - Dependency Properties [Seite 465]
11.1.2.2.2 - Attached Properties [Seite 465]
11.1.2.3 - Events [Seite 466]
11.1.2.3.1 - Handling Events [Seite 467]
11.1.2.3.2 - Routed Events [Seite 468]
11.1.2.3.3 - Routed Commands [Seite 468]
11.1.2.3.4 - Control Types [Seite 471]
11.1.3 - Control Layout [Seite 471]
11.1.3.1 - Basic Layout Concepts [Seite 471]
11.1.3.1.1 - Stack Order [Seite 472]
11.1.3.1.2 - Alignment, Margins, Padding, and Dimensions [Seite 472]
11.1.3.1.3 - Border [Seite 473]
11.1.3.1.4 - Visual Debugging Tools [Seite 473]
11.1.3.2 - Layout Panels [Seite 474]
11.1.3.2.1 - Canvas [Seite 474]
11.1.3.2.2 - DockPanel [Seite 476]
11.1.3.2.3 - StackPanel [Seite 478]
11.1.3.2.4 - WrapPanel [Seite 479]
11.1.3.2.5 - Grid [Seite 479]
11.1.4 - The Game Client [Seite 482]
11.1.4.1 - The About Window [Seite 483]
11.1.4.1.1 - Designing the User Interface [Seite 483]
11.1.4.1.2 - The Image Control [Seite 484]
11.1.4.1.3 - The Label Control [Seite 484]
11.1.4.1.4 - The TextBlock Control [Seite 484]
11.1.4.1.5 - The Button Control [Seite 485]
11.1.4.2 - The Options Window [Seite 488]
11.1.4.2.1 - The TextBox Control [Seite 489]
11.1.4.2.2 - The CheckBox Control [Seite 489]
11.1.4.2.3 - The RadioButton Control [Seite 490]
11.1.4.2.4 - The ComboBox Control [Seite 491]
11.1.4.2.5 - The TabControl [Seite 492]
11.1.4.2.6 - Handling Events in the Options Window [Seite 495]
11.1.4.3 - Data Binding [Seite 497]
11.1.4.3.1 - The DataContext [Seite 498]
11.1.4.3.2 - Binding to Local Objects [Seite 498]
11.1.4.3.3 - Static Binding to External Objects [Seite 499]
11.1.4.3.4 - Dynamic Binding to External Objects [Seite 500]
11.1.4.4 - Starting a Game with the Listbox Control [Seite 502]
11.2 - Chapter 15: Advanced Desktop Programming [Seite 509]
11.2.1 - Creating and Styling Controls [Seite 510]
11.2.1.1 - Styles [Seite 510]
11.2.1.2 - Templates [Seite 511]
11.2.1.3 - Triggers [Seite 513]
11.2.1.4 - Animations [Seite 514]
11.2.2 - WPF User Controls [Seite 515]
11.2.2.1 - Implementing Dependency Properties [Seite 516]
11.2.3 - The Main Window [Seite 529]
11.2.3.1 - The Menu Control [Seite 529]
11.2.3.2 - Routed Commands with Menus [Seite 529]
11.2.4 - Putting It All Together [Seite 534]
11.2.4.1 - Refactoring the Domain Model [Seite 534]
11.2.4.2 - The ViewModel [Seite 541]
11.2.4.3 - Completing the Game [Seite 549]
12 - Part III: Cloud and Cross-Platform Programming [Seite 561]
12.1 - Chapter 16: Basic Cloud Programming [Seite 563]
12.1.1 - The Cloud, Cloud Computing, and the Cloud Optimized Stack [Seite 564]
12.1.2 - Cloud Patterns and Best Practices [Seite 567]
12.1.3 - Using Microsoft Azure C# Libraries to Create a Storage Container [Seite 568]
12.1.4 - Creating an ASP.NET 4.7 Web Site That Uses the Storage Container [Seite 578]
12.2 - Chapter 17: Advanced Cloud Programming and Deployment [Seite 589]
12.2.1 - Creating an ASP.NET Web API [Seite 590]
12.2.2 - Deploying and Consuming an ASP.NET Web API on Microsoft Azure [Seite 594]
12.2.3 - Scaling an ASP.NET Web API on Microsoft Azure [Seite 602]
12.3 - Chapter 18: .NET Standard and .NET Core [Seite 609]
12.3.1 - Cross-Platform Basics and Key "Must Know" Terms [Seite 611]
12.3.2 - What Is .NET Standard, and Why Is It Needed? [Seite 613]
12.3.2.1 - Shared Project, PCL, and .NET Standard [Seite 614]
12.3.3 - Referencing and Targeting Frameworks [Seite 617]
12.3.4 - What is .NET Core? [Seite 618]
12.3.4.1 - Cross Platform [Seite 620]
12.3.4.2 - Open Source [Seite 621]
12.3.4.3 - Optimized for the Cloud [Seite 621]
12.3.4.4 - Performance [Seite 622]
12.3.4.5 - Modular Design [Seite 623]
12.3.4.6 - Self-Contained Deployment Model [Seite 625]
12.3.5 - Building and Packaging a .NET Standard Library [Seite 626]
12.3.6 - Building a .NET Core Application with Visual Studio [Seite 632]
12.3.7 - Porting from .NET Framework to .NET Core [Seite 635]
12.3.7.1 - Identifying Third-Party Dependencies [Seite 635]
12.3.7.2 - Understanding Which Features Are Not Available [Seite 636]
12.3.7.3 - Upgrading the Current .NET Framework Target [Seite 636]
12.3.7.4 - Choosing the Platforms to Target for the Program [Seite 636]
12.4 - Chapter 19: ASP.NET and ASP.NET Core [Seite 639]
12.4.1 - Overview of Web Applications [Seite 640]
12.4.2 - Which ASP.NET to Use and Why [Seite 641]
12.4.2.1 - ASP.NET Web Forms [Seite 643]
12.4.2.2 - ASP.NET MVC [Seite 644]
12.4.2.3 - ASP.NET Web API [Seite 647]
12.4.2.4 - ASP.NET Core [Seite 647]
12.4.2.5 - ASP.NET Web Site versus ASP.NET Web Application Project Types [Seite 648]
12.4.2.5.1 - File Structure [Seite 649]
12.4.2.5.2 - Compiling [Seite 649]
12.4.2.5.3 - Deployment [Seite 649]
12.4.3 - Using ASP.NET Web Forms [Seite 650]
12.4.3.1 - Server Controls [Seite 650]
12.4.3.2 - Input Validation [Seite 651]
12.4.3.3 - State Management [Seite 652]
12.4.3.4 - Authentication and Authorization [Seite 653]
12.4.4 - Creating ASP.NET Core Web Applications [Seite 657]
12.4.4.1 - IIS and Kestrel [Seite 658]
12.4.4.2 - Razor Syntax [Seite 658]
12.4.4.3 - Input Validation [Seite 659]
12.4.4.4 - State Management [Seite 660]
12.4.4.5 - Authentication and Authorization [Seite 661]
12.4.4.6 - Dependency Injection [Seite 662]
13 - Part IV: Data Access [Seite 669]
13.1 - Chapter 20: Files [Seite 671]
13.1.1 - File Classes for Input and Output [Seite 672]
13.1.1.1 - The File and Directory Classes [Seite 673]
13.1.1.2 - The FileInfo Class [Seite 674]
13.1.1.3 - The DirectoryInfo Class [Seite 676]
13.1.1.4 - Path Names and Relative Paths [Seite 676]
13.1.2 - Streams [Seite 677]
13.1.2.1 - Classes for Using Streams [Seite 677]
13.1.2.2 - The FileStream Object [Seite 678]
13.1.2.2.1 - File Position [Seite 680]
13.1.2.2.2 - Reading Data [Seite 680]
13.1.2.2.3 - Writing Data [Seite 683]
13.1.2.3 - The StreamWriter Object [Seite 685]
13.1.2.4 - The StreamReader Object [Seite 688]
13.1.2.4.1 - Reading Data [Seite 690]
13.1.2.5 - Asynchronous File Access [Seite 690]
13.1.2.6 - Reading and Writing Compressed Files [Seite 691]
13.1.3 - Monitoring the File System [Seite 694]
13.2 - Chapter 21: XML and JSON [Seite 703]
13.2.1 - XML Basics [Seite 704]
13.2.2 - JSON Basics [Seite 704]
13.2.3 - XML Schemas [Seite 705]
13.2.4 - XML Document Object Model [Seite 707]
13.2.4.1 - The XmlDocument Class [Seite 708]
13.2.4.2 - The XmlElement Class [Seite 708]
13.2.4.3 - Changing the Values of Nodes [Seite 713]
13.2.4.3.1 - Inserting New Nodes [Seite 714]
13.2.4.3.2 - Deleting Nodes [Seite 717]
13.2.4.3.3 - Selecting Nodes [Seite 719]
13.2.5 - Converting XML to JSON [Seite 719]
13.2.6 - Searching XML with XPath [Seite 721]
13.3 - Chapter 22: LINQ [Seite 727]
13.3.1 - LINQ to XML [Seite 728]
13.3.1.1 - LINQ to XML Functional Constructors [Seite 728]
13.3.1.2 - Working with XML Fragments [Seite 731]
13.3.2 - LINQ Providers [Seite 734]
13.3.3 - LINQ Query Syntax [Seite 735]
13.3.3.1 - Declaring a Variable for Results Using the var Keyword [Seite 736]
13.3.3.2 - Specifying the Data Source: from Clause [Seite 737]
13.3.3.3 - Specify Condition: where Clause [Seite 737]
13.3.3.4 - Selecting Items: select Clause [Seite 738]
13.3.3.5 - Finishing Up: Using the foreach Loop [Seite 738]
13.3.3.6 - Deferred Query Execution [Seite 738]
13.3.4 - LINQ Method Syntax [Seite 739]
13.3.4.1 - LINQ Extension Methods [Seite 739]
13.3.4.2 - Query Syntax versus Method Syntax [Seite 739]
13.3.4.3 - Lambda Expressions [Seite 740]
13.3.5 - Ordering Query Results [Seite 742]
13.3.6 - Understanding the orderby Clause [Seite 743]
13.3.7 - Querying a Large Data Set [Seite 744]
13.3.8 - Using Aggregate Operators [Seite 747]
13.3.9 - Using the Select Distinct Query [Seite 750]
13.3.10 - Ordering by Multiple Levels [Seite 753]
13.3.11 - Using Group Queries [Seite 755]
13.3.12 - Using Joins [Seite 757]
13.4 - Chapter 23: Databases [Seite 761]
13.4.1 - Using Databases [Seite 761]
13.4.2 - Installing SQL Server Express [Seite 762]
13.4.3 - Entity Framework [Seite 762]
13.4.4 - A Code First Database [Seite 763]
13.4.5 - But Where Is My Database? [Seite 770]
13.4.6 - Navigating Database Relationships [Seite 772]
13.4.7 - Handling Migrations [Seite 779]
13.4.8 - Creating and Querying XML from an Existing Database [Seite 780]
14 - Part V: Additional Techniques [Seite 789]
14.1 - Chapter 24: Windows Communication Foundation [Seite 791]
14.1.1 - What Is WCF? [Seite 792]
14.1.2 - WCF Concepts [Seite 793]
14.1.2.1 - WCF Communication Protocols [Seite 793]
14.1.2.2 - Addresses, Endpoints, and Bindings [Seite 794]
14.1.2.3 - Contracts [Seite 796]
14.1.2.4 - Message Patterns [Seite 797]
14.1.2.5 - Behaviors [Seite 797]
14.1.2.6 - Hosting [Seite 798]
14.1.3 - WCF Programming [Seite 798]
14.1.3.1 - The WCF Test Client [Seite 804]
14.1.3.2 - Defining WCF Service Contracts [Seite 807]
14.1.3.2.1 - Data Contracts [Seite 807]
14.1.3.2.2 - Service Contracts [Seite 808]
14.1.3.2.3 - Operation Contracts [Seite 808]
14.1.3.2.4 - Message Contracts [Seite 809]
14.1.3.2.5 - Fault Contracts [Seite 809]
14.1.3.3 - Self-Hosted WCF Services [Seite 814]
14.2 - Chapter 25: Universal Apps [Seite 823]
14.2.1 - Getting Started [Seite 824]
14.2.2 - Windows Universal Apps [Seite 825]
14.2.3 - App Concepts and Design [Seite 826]
14.2.3.1 - Screen Orientation [Seite 826]
14.2.3.2 - Menus and Toolbars [Seite 826]
14.2.3.3 - Tiles and Badges [Seite 826]
14.2.3.4 - App Lifetime [Seite 827]
14.2.3.5 - Lock Screen Apps [Seite 827]
14.2.4 - App Development [Seite 827]
14.2.4.1 - Adaptive Displays [Seite 827]
14.2.4.1.1 - Relative Panel [Seite 828]
14.2.4.1.2 - Adaptive Triggers [Seite 828]
14.2.4.1.3 - FlipView [Seite 830]
14.2.4.2 - Sandboxed Apps [Seite 835]
14.2.4.2.1 - Disk Access [Seite 836]
14.2.4.2.2 - Serialization, Streams, and Async Programming [Seite 836]
14.2.4.3 - Navigation between Pages [Seite 840]
14.2.4.4 - The CommandBar Control [Seite 842]
14.2.4.5 - Managing State [Seite 844]
14.2.5 - Common Elements of Windows Store Apps [Seite 846]
14.2.6 - The Windows Store [Seite 848]
14.2.6.1 - Packaging an App [Seite 848]
14.2.6.2 - Creating the Package [Seite 849]
15 - Appendix : Exercise Solutions [Seite 851]
15.1 - Chapter 3 Solutions [Seite 851]
15.1.1 - Exercise 1 [Seite 851]
15.1.2 - Exercise 2 [Seite 851]
15.1.3 - Exercise 3 [Seite 851]
15.1.4 - Exercise 4 [Seite 851]
15.1.5 - Exercise 5 [Seite 851]
15.2 - Chapter 4 Solutions [Seite 852]
15.2.1 - Exercise 1 [Seite 852]
15.2.2 - Exercise 2 [Seite 852]
15.2.3 - Exercise 3 [Seite 853]
15.3 - Chapter 5 Solutions [Seite 853]
15.3.1 - Exercise 1 [Seite 853]
15.3.2 - Exercise 2 [Seite 853]
15.3.3 - Exercise 3 [Seite 853]
15.3.4 - Exercise 4 [Seite 854]
15.3.5 - Exercise 5 [Seite 854]
15.3.6 - Exercise 6 [Seite 854]
15.4 - Chapter 6 Solutions [Seite 855]
15.4.1 - Exercise 1 [Seite 855]
15.4.2 - Exercise 2 [Seite 855]
15.4.3 - Exercise 3 [Seite 855]
15.4.4 - Exercise 4 [Seite 855]
15.4.5 - Exercise 5 [Seite 856]
15.5 - Chapter 7 Solutions [Seite 856]
15.5.1 - Exercise 1 [Seite 856]
15.5.2 - Exercise 2 [Seite 856]
15.5.3 - Exercise 3 [Seite 856]
15.5.4 - Exercise 4 [Seite 857]
15.6 - Chapter 8 Solutions [Seite 857]
15.6.1 - Exercise 1 [Seite 857]
15.6.2 - Exercise 2 [Seite 857]
15.6.3 - Exercise 3 [Seite 857]
15.6.4 - Exercise 4 [Seite 858]
15.6.5 - Exercise 5 [Seite 858]
15.7 - Chapter 9 Solutions [Seite 859]
15.7.1 - Exercise 1 [Seite 859]
15.7.2 - Exercise 2 [Seite 859]
15.7.3 - Exercise 3 [Seite 859]
15.7.4 - Exercise 4 [Seite 859]
15.7.5 - Exercise 5 [Seite 860]
15.8 - Chapter 10 Solutions [Seite 861]
15.8.1 - Exercise 1 [Seite 861]
15.8.2 - Exercise 2 [Seite 861]
15.8.3 - Exercise 3 [Seite 861]
15.8.4 - Exercise 4 [Seite 861]
15.8.5 - Exercise 5 [Seite 862]
15.9 - Chapter 11 Solutions [Seite 863]
15.9.1 - Exercise 1 [Seite 863]
15.9.2 - Exercise 2 [Seite 864]
15.9.3 - Exercise 3 [Seite 864]
15.9.4 - Exercise 4 [Seite 865]
15.9.5 - Exercise 5 [Seite 866]
15.10 - Chapter 12 Solutions [Seite 866]
15.10.1 - Exercise 1 [Seite 866]
15.10.2 - Exercise 2 [Seite 866]
15.10.3 - Exercise 3 [Seite 867]
15.10.4 - Exercise 4 [Seite 867]
15.10.5 - Exercise 5 [Seite 867]
15.10.6 - Exercise 6 [Seite 869]
15.11 - Chapter 13 Solutions [Seite 869]
15.11.1 - Exercise 1 [Seite 869]
15.11.2 - Exercise 2 [Seite 870]
15.11.3 - Exercise 3 [Seite 874]
15.11.4 - Exercise 4 [Seite 874]
15.11.5 - Exercise 5 [Seite 875]
15.11.6 - Exercise 6 [Seite 875]
15.11.7 - Exercise 7 [Seite 875]
15.11.8 - Exercise 8 [Seite 875]
15.12 - Chapter 14 Solutions [Seite 875]
15.12.1 - Exercise 1 [Seite 875]
15.12.2 - Exercise 2 [Seite 876]
15.12.3 - Exercise 3 [Seite 876]
15.12.4 - Exercise 4 [Seite 877]
15.13 - Chapter 15 Solutions [Seite 878]
15.13.1 - Exercise 1 [Seite 878]
15.13.2 - Exercise 2 [Seite 880]
15.13.3 - Exercise 3 [Seite 880]
15.14 - Chapter 16 Solutions [Seite 881]
15.14.1 - Exercise 1 [Seite 881]
15.14.2 - Exercise 2 [Seite 882]
15.15 - Chapter 17 Solutions [Seite 882]
15.15.1 - Exercise 1 [Seite 882]
15.15.2 - Exercise 2 [Seite 883]
15.16 - Chapter 20 Solutions [Seite 883]
15.16.1 - Exercise 1 [Seite 883]
15.16.2 - Exercise 2 [Seite 883]
15.16.3 - Exercise 3 [Seite 883]
15.16.4 - Exercise 4 [Seite 883]
15.16.5 - Exercise 5 [Seite 884]
15.16.6 - Exercise 6 [Seite 884]
15.17 - Chapter 21 Solutions [Seite 884]
15.17.1 - Exercise 1 [Seite 884]
15.17.2 - Exercise 2 [Seite 884]
15.17.3 - Exercise 3 [Seite 884]
15.17.4 - Exercise 4 [Seite 885]
15.18 - Chapter 22 Solutions [Seite 885]
15.18.1 - Exercise 1 [Seite 885]
15.18.2 - Exercise 2 [Seite 886]
15.18.3 - Exercise 3 [Seite 886]
15.18.4 - Exercise 4 [Seite 887]
15.18.5 - Exercise 5 [Seite 887]
15.18.6 - Exercise 6 [Seite 888]
15.19 - Chapter 23 Solutions [Seite 888]
15.19.1 - Exercise 1 [Seite 888]
15.19.2 - Exercise 2 [Seite 889]
15.19.3 - Exercise 3 [Seite 889]
15.19.4 - Exercise 4 [Seite 890]
15.20 - Chapter 24 Solutions [Seite 892]
15.20.1 - Exercise 1 [Seite 892]
15.20.2 - Exercise 2 [Seite 892]
15.20.3 - Exercise 3 [Seite 892]
15.20.4 - Exercise 4 [Seite 892]
15.20.5 - Exercise 5 [Seite 892]
15.21 - Chapter 25 Solutions [Seite 893]
15.21.1 - Exercise 1 [Seite 893]
15.21.2 - Exercise 2 [Seite 894]
16 - Index [Seite 895]
17 - EULA [Seite 915]