C# 6.0 and the .NET 4.6 framework:
Gespeichert in:
Vorheriger Titel: | Pro C# 5.0 and the .NET 4.5 Framework |
---|---|
Hauptverfasser: | , |
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
New York
Apress
[2015]
|
Ausgabe: | Seventh edition |
Schriftenreihe: | For professionals by professionals
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | lxxiii, 1625 Seiten Illustrationen |
ISBN: | 9781484213339 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV042994004 | ||
003 | DE-604 | ||
005 | 20160921 | ||
007 | t | ||
008 | 151110s2015 a||| |||| 00||| eng d | ||
020 | |a 9781484213339 |c pbk |9 978-1-4842-1333-9 | ||
035 | |a (OCoLC)953261852 | ||
035 | |a (DE-599)BVBBV042994004 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-29T |a DE-11 |a DE-473 |a DE-703 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a ST 253 |0 (DE-625)143628: |2 rvk | ||
100 | 1 | |a Troelsen, Andrew W. |e Verfasser |4 aut | |
240 | 1 | 0 | |a C# and the .NET platform |
245 | 1 | 0 | |a C# 6.0 and the .NET 4.6 framework |c Andrew Troelsen, Philip Japikse |
250 | |a Seventh edition | ||
264 | 1 | |a New York |b Apress |c [2015] | |
264 | 4 | |c © 2015 | |
300 | |a lxxiii, 1625 Seiten |b Illustrationen | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a For professionals by professionals | |
650 | 0 | 7 | |a ADO.NET |0 (DE-588)4678430-5 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Microsoft dot net |0 (DE-588)4645646-6 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a C sharp |0 (DE-588)4616843-6 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Informatik |0 (DE-588)4026894-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Microsoft dot net 4.6 |0 (DE-588)1083270699 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a C sharp 6.0 |0 (DE-588)1078640599 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a C sharp 6.0 |0 (DE-588)1078640599 |D s |
689 | 0 | 1 | |a Microsoft dot net 4.6 |0 (DE-588)1083270699 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Informatik |0 (DE-588)4026894-9 |D s |
689 | 1 | 1 | |a C sharp |0 (DE-588)4616843-6 |D s |
689 | 1 | 2 | |a Microsoft dot net |0 (DE-588)4645646-6 |D s |
689 | 1 | |8 1\p |5 DE-604 | |
689 | 2 | 0 | |a ADO.NET |0 (DE-588)4678430-5 |D s |
689 | 2 | |8 2\p |5 DE-604 | |
700 | 1 | |a Japikse, Philip |e Verfasser |4 aut | |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe |z 978-1-4842-1332-2 |
780 | 0 | 0 | |i Vorangegangen ist |a Pro C# 5.0 and the .NET 4.5 Framework |w (DE-604)BV041215633 |
856 | 4 | 2 | |m HEBIS Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028419399&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-028419399 | ||
883 | 1 | |8 1\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk | |
883 | 1 | |8 2\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk |
Datensatz im Suchindex
_version_ | 1804175330507751424 |
---|---|
adam_text | C# 6 0 and the NET 4 6
Framework
Seventh Edition
Andrew Troelsen
Philip Japikse
ULB Darmstadt
Apress®
19337260
Contents
About the Authors Ivii
About the Technical Reviewer lix
Acknowledgments Ixi
Introduction Ixiii
■Part I: Introducing C# and the NET Platform 1
■Chapter 1: The Philosophy of NET 3
An Initial Look at the NET Platform 3
Some Key Benefits of the NET Platform 4
Introducing the Building Blocks of the NET Platform (the CLR, CTS, and CLS) 4
The Role of the Base Class Libraries 5
What C# Brings to the Table 5
Managed vs Unmanaged Code 7
Additional NET-Aware Programming Languages 8
Life in a Multilanguage World 8
An Overview of NET Assemblies 9
The Role of the Common Intermediate Language 10
Benefits of CIL 12
Compiling CIL to Platform-Specific Instructions 12
The Role of NET Type Metadata 13
The Role of the Assembly Manifest 14
Understanding the Common Type System 14
CTS Class Types 15
CTS Interface Types 15
IX
i CONTENTS
CTS Structure Types 16
CTS Enumeration Types 16
CTS Delegate Types 17
CTS Type Members 17
Intrinsic CTS Data Types 17
Understanding the Common Language Specification 18
Ensuring CLS Compliance 20
Understanding the Common Language Runtime 20
The Assembly/Namespace/Type Distinction 22
The Role of the Microsoft Root Namespace 23
Accessing a Namespace Programmatically 25
Referencing External Assemblies 26
Exploring an Assembly Using ildasm exe 27
Viewing CILCode 28
Viewing Type Metadata 29
Viewing Assembly Metadata (aka the Manifest) 30
The Platform-Independent Nature of NET 31
The Mono Project 32
Microsoft NET Core 32
Summary 33
■Chapter 2: Building C# Applications 35
Building C# Applications on the Windows OS 35
The Visual Studio Express Family of IDEs 36
The Visual Studio Community Edition IDE 44
The Visual Studio 2015 Professional IDE 50
The NET Framework Documentation System 50
Building NET Applications Beyond the Windows OS 53
The Role of Xamarin Studio 53
Summary 57
■ CONTENTS
■Part II: Core C# Programming 59
■Chapter 3: Core C# Programming Constructs, Part 1 61
The Anatomy of a Simple C# Program 61
Variations on the Main() Method 63
Specifying an Application Error Code 64
Processing Command-Line Arguments 65
Specifying Command-Line Arguments with Visual Studio 66
An Interesting Aside: Some Additional Members of the System Environment Class 67
The System Console Class 69
Basic Input and Output with the Console Class 69
Formatting Console Output 71
Formatting Numerical Data 71
Formatting Numerical Data Beyond Console Applications 73
System Data Types and Corresponding C# Keywords 74
Variable Declaration and Initialization 75
Intrinsic Data Types and the new Operator 77
The Data Type Class Hierarchy 77
Members of Numerical Data Types 79
Members of System Boolean 80
Members of System Char 80
Parsing Values from String Data 81
System DateTime and System TimeSpan 81
The System Numerics dll Assembly 82
Working with String Data 83
Basic String Manipulation 84
String Concatenation 85
Escape Characters 86
Defining Verbatim Strings 87
Strings and Equality 87
Strings Are Immutable 88
xi
mCONTENTS
The System Text StringBuilder Type 89
String Interpolation 90
Narrowing and Widening Data Type Conversions 91
The checked Keyword 94
Setting Project-wide Overflow Checking 95
The unchecked Keyword 96
Understanding Implicitly Typed Local Variables 97
Restrictions on Implicitly Typed Variables 98
Implicit Typed Data Is Strongly Typed Data 99
Usefulness of Implicitly Typed Local Variables 100
C# Iteration Constructs 101
The for Loop 101
Theforeach Loop 102
Use of Implicit Typing Within foreach Constructs 102
The while and do/while Looping Constructs 103
Decision Constructs and the Relational/Equality Operators 104
The if/else Statement 104
Equality and Relational Operators 104
Conditional Operators 105
The switch Statement 105
Summary 108
■Chapter 4: Core C# Programming Constructs, Part II 109
Methods and Parameter Modifiers 109
The Default by Value Parameter-Passing Behavior 110
The out Modifier Ill
The ref Modifier 112
The params Modifier 114
Defining Optional Parameters 115
Xll
CONTENTS
Invoking Methods Using Named Parameters 116
Understanding Method Overloading 118
Understanding C# Arrays 120
C# Array Initialization Syntax ; 121
Implicitly Typed Local Arrays 122
Defining an Array of Objects 123
Working with Multidimensional Arrays 124
Arrays As Arguments or Return Values 125
The System Array Base Class 126
Understanding the enum Type 127
Controlling the Underlying Storage for an enum 129
Declaring enum Variables 129
The System Enum Type 130
Dynamically Discovering an enum’s Name/Value Pairs 131
Understanding the Structure (aka Value Type) 133
Creating Structure Variables 135
Understanding Value Types and Reference Types 136
Value Types, References Types, and the Assignment Operator 137
Value Types Containing Reference Types 139
Passing Reference Types by Value 141
Passing Reference Types by Reference 142
Final Details Regarding Value Types and Reference Types 143
Understanding C# Nullable Types 144
Working with Nullable Types 145
The Null Coalescing Operator 146
The Null Conditional Operator 147
Summary 148
xiii
m CONTENTS
■Part III: Object-Oriented Programming with C# 149
■Chapter 5: Understanding Encapsulation 151
Introducing the C# Class Type 151
Allocating Objects with the new Keyword 154
Understanding Constructors 155
The Role of the Default Constructor 155
Defining Custom Constructors 156
The Default Constructor Revisited 157
The Role of the this Keyword 159
Chaining Constructor Calls Using this 161
Observing Constructor Flow 163
Revisiting Optional Arguments 165
Understanding the static Keyword 166
Defining Static Field Data 167
Defining Static Methods 169
Defining Static Constructors 170
Defining Static Classes 173
Importing Static Members via the C# using Keyword 174
Defining the Pillars of OOP 175
The Role of Encapsulation 175
The Role of Inheritance 175
The Role of Polymorphism 177
C# Access Modifiers 179
The Default Access Modifiers 179
Access Modifiers and Nested Types 180
The First Pillar: C#’s Encapsulation Services 181
Encapsulation Using Traditional Accessors and Mutators 182
Encapsulation Using NET Properties 184
Using Properties Within a Class Definition 187
Read-Only and Write-Only Properties 189
Revisiting the static Keyword: Defining Static Properties 190
XIV
m CONTENTS
Understanding Automatic Properties 190
Interacting with Automatic Properties 192
Automatic Properties and Default Values 192
Initialization of Automatic Properties 194
Understanding Object Initialization Syntax 195
Calling Custom Constructors with Initialization Syntax 197
Initializing Data with Initialization Syntax 198
Working with Constant Field Data 199
Understanding Read-Only Fields 201
Static Read-Only Fields 201
Understanding Partial Classes 202
Use Cases for Partial Classes? 203
Summary 204
■Chapter 6: Understanding Inheritance and Polymorphism 205
The Basic Mechanics of Inheritance 205
Specifying the Parent Class of an Existing Class 206
Regarding Multiple Base Classes 208
The sealed Keyword 208
Revising Visual Studio Class Diagrams 210
The Second Pillar of OOP: The Details of Inheritance 212
Controlling Base Class Creation with the base Keyword 213
Keeping Family Secrets: The protected Keyword 215
Adding a Sealed Class 216
Programming for Containment/Delegation 217
Understanding Nested Type Definitions 218
The Third Pillar of OOP: C#’s Polymorphic Support 220
The virtual and override Keywords 221
Overriding Virtual Members Using the Visual Studio IDE 223
Sealing Virtual Members 225
Understanding Abstract Classes 225
XV
■ CONTENTS
Understanding the Polymorphic Interface 228
Understanding Member Shadowing 232
Understanding Base Class/Derived Class Casting Rules 234
The C# as Keyword 235
The C# is Keyword 237
The Master Parent Class: System Object 237
Overriding System Object ToString() 240
Overriding System Object Equals() 241
Overriding System Object GetHashCode() 242
Testing Your Modified Person Class 243
The Static Members of System Object 244
Summary 245
■Chapter 7: Understanding Structured Exception Handling 247
Ode to Errors, Bugs, and Exceptions 247
The Role of NET Exception Handling 248
The Building Blocks of NET Exception Handling 249
The System Exception Base Class 249
The Simplest Possible Example 251
Throwing a General Exception 253
Catching Exceptions 254
Configuring the State of an Exception 256
The TargetSite Property 256
The StackTrace Property 257
The HelpLink Property 257
The Data Property 258
System-Level Exceptions (System SystemException) 260
Application-Level Exceptions (System ApplicationException) 261
Building Custom Exceptions, Take 1 261
Building Custom Exceptions, Take 2 263
Building Custom Exceptions, Take 3 264
XVI
■ CONTENTS
Processing Multiple Exceptions 265
General catch Statements 268
Rethrowing Exceptions 268
Inner Exceptions 269
The finally Block 270
Exception Filters 271
Debugging Unhandled Exceptions Using Visual Studio 272
Summary 273
■Chapter 8: Working with Interfaces 275
Understanding Interface Types 275
Interface Types vs Abstract Base Classes 276
Defining Custom Interfaces 278
Implementing an Interface 281
Invoking Interface Members at the Object Level 283
Obtaining Interface References: The as Keyword 284
Obtaining Interface References: The is Keyword 284
Interfaces As Parameters 285
Interfaces As Return Values 287
Arrays of Interface Types 288
Implementing Interfaces Using Visual Studio 289
Explicit Interface Implementation 291
Designing Interface Hierarchies 293
Multiple Inheritance with Interface Types 295
The Enumerable and Enumerator Interfaces 297
Building Iterator Methods with the yield Keyword 300
Building a Named Iterator 301
The ICIoneable Interface 302
A More Elaborate Cloning Example 304
xvii
mCONTENTS
The IComparable Interface 307
Specifying Multiple Sort Orders with IComparer 310
Custom Properties and Custom Sort Types 311
Summary 312
■Part IV: Advanced C# Programming 313
■Chapter 9: Collections and Generics 315
The Motivation for Collection Classes 315
The System Collections Namespace 317
A Survey of System Collections Specialized Namespace 318
The Problems of Nongeneric Collections 319
The Issue of Performance 320
The Issue of Type Safety 323
A First Look at Generic Collections 326
The Role of Generic Type Parameters 327
Specifying Type Parameters for Generic Classes/Structures 328
Specifying Type Parameters for Generic Members 330
Specifying Type Parameters for Generic Interfaces 330
The System Collections Generic Namespace 331
Understanding Collection Initialization Syntax 333
Working with the List T Class 334
Working with the Stack T Class 336
Working with the Queue T Class 337
Working with the SortedSet T Class 338
Working with the DictionarycTKey, TValue Class 340
The System Collections ObjectModel Namespace 341
Working with ObservableCollection T 341
Creating Custom Generic Methods 343
Inference of Type Parameters 346
xviii
■ CONTENTS
Creating Custom Generic Structures and Classes 347
The default Keyword in Generic Code 349
Constraining Type Parameters 350
Examples Using the where Keyword 1 351
The Lack of Operator Constraints 352
Summary 353
■Chapter 10: Delegates, Events, and Lambda Expressions 355
Understanding the NET Delegate Type 355
Defining a Delegate Type in C# 356
The System MulticastDelegate and System Delegate Base Classes 359
The Simplest Possible Delegate Example 360
Investigating a Delegate Object 362
Sending Object State Notifications Using Delegates 363
Enabling Multicasting 366
Removing Targets from a Delegate’s Invocation List 368
Method Group Conversion Syntax 369
Understanding Generic Delegates 371
The Generic Actiono and Funco Delegates 372
Understanding C# Events 374
The C# event Keyword 376
Events Under the Hood 377
Listening to Incoming Events 378
Simplifying Event Registration Using Visual Studio 380
Cleaning Up Event Invocation Using the C# 6 0 Null-Conditional Operator 381
Creating Custom Event Arguments 382
The Generic EventHandler T Delegate 384
Understanding C# Anonymous Methods 385
Accessing Local Variables 387
xix
m CONTENTS
Understanding Lambda Expressions 388
Dissecting a Lambda Expression 391
Processing Arguments Within Multiple Statements 392
Lambda Expressions with Multiple (or Zero) Parameters 393
Retrofitting the CarEvents Example Using Lambda Expressions 395
Lambdas and Single Statement Member Implementations 395
Summary 397
■Chapter 11: Advanced C# Language Features 399
Understanding Indexer Methods 399
Indexing Data Using String Values 401
Overloading Indexer Methods 402
Indexers with Multiple Dimensions 403
Indexer Definitions on Interface Types 404
Understanding Operator Overloading 404
Overloading Binary Operators 405
And What of the += and -+ Operators? 408
Overloading Unary Operators 408
Overloading Equality Operators 409
Overloading Comparison Operators 410
Final Thoughts Regarding Operator Overloading 411
Understanding Custom Type Conversions 411
Recall: Numerical Conversions 412
Recall: Conversions Among Related Class Types 412
Creating Custom Conversion Routines 413
Additional Explicit Conversions for the Square Type 416
Defining Implicit Conversion Routines 417
Understanding Extension Methods 418
Defining Extension Methods 419
Invoking Extension Methods 420
Importing Extension Methods 421
xx
m CONTENTS
The IntelliSense of Extension Methods
Extending Types Implementing Specific Interfaces
Understanding Anonymous Types
Defining an Anonymous Type
The Internal Representation of Anonymous Types
The Implementation of ToStringQ and GetHashCodeQ
The Semantics of Equality for Anonymous Types
Anonymous Types Containing Anonymous Types
Working with Pointer Types
The unsafe Keyword
Working with the * and amp; Operators
An Unsafe (and Safe) Swap Function
Field Access via Pointers (the - Operator)
The stackalloc Keyword
Pinning a Type via the fixed Keyword
The sizeof Keyword
Summary
■Chapter 12: LINQ to Objects
LINQ-Specific Programming Constructs
Implicit Typing of Local Variables
Object and Collection Initialization Syntax
Lambda Expressions
Extension Methods
Anonymous Types
Understanding the Role of LINQ
UNO Expressions Are Strongly Typed
The Core LINQ Assemblies
Applying LINQ Queries to Primitive Arrays
Once Again, Without LINQ
Reflecting over a LINQ Result Set
422
422
424
424
425
427
427
429
429
431
433
434
435
435
436
437
437
439
439
440
440
441
442
443
443
444
444
445
447
447
■ CONTENTS
LINQ and Implicitly Typed Local Variables 448
LINQ and Extension Methods 449
The Role of Deferred Execution 450
The Role of Immediate Execution 451
Returning the Result of a LINQ Query 452
Returning LINQ Results via Immediate Execution 453
Applying LINQ Queries to Collection Objects 454
Accessing Contained Subobjects 455
Applying LINQ Queries to Nongeneric Collections 456
Filtering Data Using OfType T () 457
Investigating the C# LINQ Query Operators 457
Basic Selection Syntax 459
Obtaining Subsets of Data 460
Projecting New Data Types 460
Obtaining Counts Using Enumerable 462
Reversing Result Sets 462
Sorting Expressions 463
LINQ As a Better Venn Diagramming Tool 463
Removing Duplicates 465
LINQ Aggregation Operations 465
The Internal Representation of LINQ Query Statements 466
Building Query Expressions with Query Operators (Revisited) 467
Building Query Expressions Using the Enumerable Type and Lambda Expressions 467
Building Query Expressions Using the Enumerable Type and Anonymous Methods 469
Building Query Expressions Using the Enumerable Type and Raw Delegates 469
Summary 471
■Chapter 13: Understanding Object Lifetime 473
Classes, Objects, and References 473
The Basics of Object Lifetime 475
The CILof new 475
Setting Object References to null 477
xxii
St CONTENTS
The Role of Application Roots 477
Understanding Object Generations 479
Concurrent Garbage Collection Prior to NET 4 0 480
Background Garbage Collection Under NET 4 0 and Beyond 1 480
The System GC Type 481
Forcing a Garbage Collection 482
Building Finalizable Objects 485
Overriding System Object FinalizeQ 486
Detailing the Finalization Process 488
Building Disposable Objects 488
Reusing the C# using Keyword 490
Building Finalizable and Disposable Types 492
A Formalized Disposal Pattern 493
Understanding Lazy Object Instantiation 495
Customizing the Creation of the Lazy Data 498
Summary 499
■Part V: Programming with NET Assemblies 501
■Chapter 14: Building and Configuring Class Libraries 503
Defining Custom Namespaces 503
Resolving Name Clashes with Fully Qualified Names 505
Resolving Name Clashes with Aliases 507
Creating Nested Namespaces 508
The Default Namespace of Visual Studio 509
The Role of NET Assemblies 510
Assemblies Promote Code Reuse 510
Assemblies Establish a Type Boundary 510
Assemblies are Versionable Units 511
Assemblies are Self-Describing 511
Assemblies are Configurable 511
xxiii
CONTENTS
Understanding the Format of a NET Assembly 511
The Windows File Header 512
The CLR File Header 513
CIL Code, Type Metadata, and the Assembly Manifest 514
Optional Assembly Resources 514
Building and Consuming Custom Class Library 514
Exploring the Manifest 517
Exploring the CIL 520
Exploring the Type Metadata 521
Building a C# Client Application 522
Building a Visual Basic Client Application 523
Cross-Language Inheritance in Action 525
Understanding Private Assemblies 526
The Identity of a Private Assembly 526
Understanding the Probing Process 526
Configuring Private Assemblies 527
The Role of the App Config File 529
Understanding Shared Assemblies 531
The Global Assembly Cache 532
Understanding Strong Names 533
Generating Strong Names at the Command Line 535
Generating Strong Names Using Visual Studio 537
Installing Strongly Named Assemblies to the GAC 539
Consuming a Shared Assembly 540
Exploring the Manifest of SharedCarLibClient 542
Configuring Shared Assemblies 542
Freezing the Current Shared Assembly 543
Building a Shared Assembly Version 2000 543
Dynamically Redirecting to Specific Versions of a Shared Assembly 546
XXIV
% CONTENTS
Understanding Publisher Policy Assemblies 547
Disabling Publisher Policy 548
Understanding the codeBase Element 549
The System Configuration Namespace 550
The Configuration File Schema Documentation 552
Summary 553
■Chapter 15: Type Reflection, Late Binding, and Attribute-Based Programming 555
The Necessity of Type Metadata 555
Viewing (Partial) Metadata for the EngineState Enumeration 556
Viewing (Partial) Metadata for the Car Type 557
Examining a TypeRef 559
Documenting the Defining Assembly 559
Documenting Referenced Assemblies 559
Documenting String Literals 560
Understanding Reflection 561
The System Type Class 561
Obtaining a Type Reference Using System Object GetType() 562
Obtaining a Type Reference Using typeofQ 563
Obtaining a Type Reference Using System Type GefTypeQ 563
Building a Custom Metadata Viewer 564
Reflecting on Methods 564
Reflecting on Fields and Properties 565
Reflecting on Implemented Interfaces 565
Displaying Various Odds and Ends 566
Implementing MainQ 566
Reflecting on Generic Types 568
Reflecting on Method Parameters and Return Values 568
Dynamically Loading Assemblies 569
Reflecting on Shared Assemblies 572
XXV
mCONTENTS
Understanding Late Binding 574
The System Activator Class 574
Invoking Methods with No Parameters 576
Invoking Methods with Parameters 577
Understanding the Role of NET Attributes 578
Attribute Consumers 579
Applying Attributes in C# 579
C# Attribute Shorthand Notation 581
Specifying Constructor Parameters for Attributes 581
The Obsolete Attribute in Action 581
Building Custom Attributes 582
Applying Custom Attributes 583
Named Property Syntax 583
Restricting Attribute Usage 584
Assembly-Level Attributes 585
The Visual Studio Assemblylnfo es File 586
Reflecting on Attributes Using Early Binding 587
Reflecting on Attributes Using Late Binding 588
Putting Reflection, Late Binding, and Custom Attributes in Perspective 590
Building an Extendable Application 591
Building CommonSnappableTypes dll 591
Building the C# Snap-In 59
Building the Visual Basic Snap-In 59
Building an Extendable Windows Forms Application 59
Summary 59
■Chapter 16: Dynamic Types and the Dynamic Language Runtime 59
The Role of the C# dynamic Keyword 59
Calling Members on Dynamically Declared Data 60
The Role of the Microsoft CSharp dll Assembly 60
The Scope of the dynamic Keyword 60
XXVI
■ CONTENTS
Limitations of the dynamic Keyword 604
Practical Uses of the dynamic Keyword 605
The Role of the Dynamic Language Runtime 605
The Role of Expression Trees 606
The Role of the System Dynamic Namespace 606
Dynamic Runtime Lookup of Expression Trees 607
Simplifying Late-Bound Calls Using Dynamic Types 607
Leveraging the dynamic Keyword to Pass Arguments 608
Simplifying COM Interoperability Using Dynamic Data 611
The Role of Primary Interop Assemblies 612
Embedding Interop Metadata 613
Common COM Interop Pain Points 614
COM Interop Using C# Dynamic Data 615
COM interop Without C# Dynamic Data 619
Summary 621
■Chapter 17: Processes, AppDomains, and Object Contexts 623
The Role of a Windows Process 623
The Role of Threads 624
Interacting with Processes Under the NET Platform 626
Enumerating Running Processes 628
Investigating a Specific Process 629
Investigating a Process’s Thread Set 630
Investigating a Process’s Module Set 632
Starting and Stopping Processes Programmatically 633
Controlling Process Startup Using the ProcessStartlnfo Class 634
Understanding NET Application Domains 635
The System AppDomain Class 636
Interacting with the Default Application Domain 638
Enumerating Loaded Assemblies 639
Receiving Assembly Load Notifications 640
xxvii
■ CONTENTS
Creating New Application Domains 641
Loading Assemblies into Custom Application Domains 643
Programmatically Unloading AppDomains 644
Understanding Object Context Boundaries 645
Context-Agile and Context-Bound Types 646
Defining a Context-Bound Object 647
Inspecting an Object’s Context 647
Summarizing Processes, AppDomains, and Context 649
Summary 649
■Chapter 18: Understanding CIL and the Role of Dynamic Assemblies 651
Motivations for Learning the Grammar of CIL 651
Examining CIL Directives, Attributes, and Opcodes 652
The Role of CIL Directives 653
The Role of CIL Attributes 653
The Role of CIL Opcodes 653
The CIL Opcode/CIL Mnemonic Distinction 654
Pushing and Popping: The Stack-Based Nature of CIL 654
Understanding Round-Trip Engineering 656
The Role of CIL Code Labels 659
Interacting with CIL: Modifying an * il File 660
Compiling CIL Code Using ilasm exe 661
The Role of peverify exe 662
Understanding CIL Directives and Attributes 663
Specifying Externally Referenced Assemblies in CIL 663
Defining the Current Assembly in CIL 663
Defining Namespaces in CIL 664
Defining Class Types in CIL 665
Defining and Implementing interfaces in CIL 666
Defining Structures in CIL 667
Defining Enums in CIL 667
xxviii
CONTENTS
Defining Generics in CIL 668
Compiling the CILTypes il file 668
NET Base Class Library, C#, and CIL Data Type Mappings 669
Defining Type Members in CIL 670
Defining Field Data in CIL 670
Defining Type Constructors in CIL 671
Defining Properties in CIL 671
Defining Member Parameters 672
Examining CIL Opcodes 673
The maxstack Directive 675
Declaring Local Variables in CIL 675
Mapping Parameters to Local Variables in CIL 676
The Hidden this Reference 677
Representing Iteration Constructs in CIL 677
Building a NET Assembly with CIL 678
Building CILCars dll 678
Building CILCarClientexe 681
Understanding Dynamic Assemblies 683
Exploring the System Reflection Emit Namespace 683
The Role of the System Reflection EmitlLGenerator 684
Emitting a Dynamic Assembly 685
Emitting the Assembly and Module Set 687
The Role of the ModuleBuilder Type 688
Emitting the HelloClass Type and the String Member Variable 689
Emitting the Constructors 690
Emitting the SayHelloQ Method 691
Using the Dynamically Generated Assembly 691
Summary 692
XXIX
■ CONTENTS
■Part VI: Introducing the NET Base Class Libraries 693
■Chapter 19: Multithreaded, Parallel, and Async Programming 695
The Process/AppDomain/Context/Thread Relationship 695
The Problem of Concurrency 696
The Role of Thread Synchronization 697
A Brief Review of the NET Delegate 697
The Asynchronous Nature of Delegates 699
The BeginlnvokeQ and EndlnvokeQ Methods 700
The System lAsyncResult Interface 700
Invoking a Method Asynchronously 701
Synchronizing the Calling Thread 702
The Role of the AsyncCallback Delegate 703
The Role of the AsyncResult Class 706
Passing and Receiving Custom State Data 706
The System Threading Namespace 707
The System Threading Thread Class 708
Obtaining Statistics About the Current Thread of Execution 709
The Name Property 710
The Priority Property 711
Manually Creating Secondary Threads 711
Working with the ThreadStart Delegate 712
Working with the ParameterizedThreadStart Delegate 714
The AutoResetEvent Class 715
Foreground Threads and Background Threads 716
The Issue of Concurrency 717
Synchronization Using the C# lock Keyword 719
Synchronization Using the System Threading MonitorType 722
Synchronization Using the System Threading InterlockedType 722
Synchronization Using the [Synchronization] Attribute 724
xxx
* CONTENTS
Programming with Timer Callbacks 724
Understanding the CLR ThreadPool 726
Parallel Programming Using the Task Parallel Library 727
The System Threading Tasks Namespace 728
The Role of the Parallel Class 728
Data Parallelism with the Parallel Class 729
Accessing Ul Elements on Secondary Threads 731
The Task Class 732
Handling Cancellation Request 733
Task Parallelism Using the Parallel Class 735
Parallel LINQ Queries (PLINQ) 738
Opting in to a PLINQ Query 739
Cancelling a PLINQ Query 740
Asynchronous Calls with the async Keyword 741
A First Look at the C# async and await Keywords 741
Naming Conventions for Async Methods 743
Async Methods Returning Void 744
Async Methods with Multiple Awaits 744
Retrofitting the AddWithThreads Example Using Asycn/Await 745
Summary 747
■Chapter 20: File I/O and Object Serialization 749
Exploring the System 10 Namespace 749
The Directory(lnfo) and File(lnfo) Types 750
The Abstract FileSystemlnfo Base Class 751
Working with the Directorylnfo Type 752
Enumerating Files with the Directorylnfo Type 753
Creating Subdirectories with the Directorylnfo Type 754
Working with the Directory Type 756
Working with the Drivelnfo Class Type 757
XXXI
m CONTENTS
Working with the Filelnfo Class 758
The Filelnfo Create() Method 759
The Filelnfo Open() Method 759
The Filelnfo OpenReadQ and Filelnfo OpenWriteQ Methods 761
The Filelnfo OpenTextO Method 761
The Filelnfo CreateText() and Filelnfo AppendTextQ Methods 762
Working with the File Type 762
Additional File-Centric Members 763
The Abstract Stream Class 764
Working with FileStreams 765
Working with StreamWriters and StreamReaders 767
Writing to a Text File 768
Reading from a Text File 769
Directly Creating StreamWriter/StreamReader Types 770
Working with StringWriters and StringReaders 770
Working with BinaryWriters and BinaryReaders 772
Watching Files Programmatically 774
Understanding Object Serialization 776
The Role of Object Graphs 778
Configuring Objects for Serialization 779
Defining Serializable Types 779
Public Fields, Private Fields, and Public Properties 780
Choosing a Serialization Formatter 781
The Formatter and IRemotingFormatter Interfaces 781
Type Fidelity Among the Formatters 782
Serializing Objects Using the BinaryFormatter 783
Deserializing Objects Using the BinaryFormatter 785
Serializing Objects Using the SoapFormatter 786
Serializing Objects Using the XmlSerializer 787
Controlling the Generated XML Data 788
xxxii
■ CONTENTS
Serializing Collections of Objects 790
Customizing the Soap/Binary Serialization Process 791
A Deeper Look at Object Serialization 792
Customizing Serialization Using ISerializable 793
Customizing Serialization Using Attributes 796
Summary 797
■Chapter 21: ADO NET Part I: The Connected Layer 799
A High-Level Definition ofADO NET 800
The Three Faces ofADO NET 801
Understanding ADO NET Data Providers 802
The Microsoft-Supplied ADO NET Data Providers 804
A Word Regarding System Data OracleClient dll 805
Obtaining Third-PartyADO NET Data Providers 805
Additional ADO NET Namespaces 806
The Types of the System Data Namespace 806
The Role of the IDbConnection Interface 807
The Role of the IDbTransaction Interface 808
The Role of the IDbCommand Interface 808
The Role of the IDbDataParameter and IDataParameter Interfaces 809
The Role of the IDbDataAdapter and IDataAdapter Interfaces 809
The Role of the IDataReader and IDataRecord Interfaces 810
Abstracting Data Providers Using Interfaces 811
Increasing Flexibility Using Application Configuration Files 813
Creating the AutoLot Database 814
Creating the Inventory Table 815
Adding Test Records to the Inventory Table 818
Authoring the GetPetNameQ Stored Procedure 819
Creating the Customers and Orders Tables 820
Creating Table Relationships in Visual Studio 822
xxxiii
■ CONTENTS
The ADO NET Data Provider Factory Model 823
A Complete Data Provider Factory Example 824
A Potential Drawback with the Data Provider Factory Model 827
The connectionStrings Element 828
Understanding the Connected Layer of AD0 NET 829
Working with Connection Objects 830
Working with ConnectionStringBuilder Objects 833
Working with Command Objects 834
Working with Data Readers 835
Obtaining Multiple Result Sets Using a Data Reader 836
Building a Reusable Data Access Library 837
Adding the Connection Logic 838
Adding the Insertion Logic 839
Adding the Deletion Logic 840
Adding the Update Logic 841
Adding the Selection Logic 841
Working with Parameterized Command Objects 842
Specifying Parameters Using the DbParameter Type 843
Executing a Stored Procedure 844
Creating a Console Ul-Based Front End 846
Implementing the Main() Method 847
Implementing the Showlnstructions() Method 849
Implementing the ListlnventoryQ Method 849
Implementing the DeleteCarQ Method 850
Implementing the InsertNewCarQ Method 850
Implementing the UpdateCarPetNameQ Method 851
Implementing LookUpPetNameQ 851
Understanding Database Transactions 852
Key Members of an AD0 NET Transaction Object 853
Adding a CreditRisks Table to the AutoLot Database 854
XXXIV
CONTENTS
Adding a Transaction Method to InventoryDAL 855
Testing Your Database Transaction 857
Summary 858
■Chapter 22: ADO NET Part II: The Disconnected Layer 859
Understanding the Disconnected Layer ofADO NET 860
Understanding the Role of the DataSet 861
Key Properties of the DataSet 861
Key Methods of the DataSet 862
Building a DataSet 863
Working with DataColumns 863
Building a DataColumn 864
Enabling Autoincrementing Fields 865
Adding DataColumn Objects to a DataTable 866
Working with DataRows 866
Understanding the RowState Property 868
Understanding the DataRowVersion Property 869
Working with DataTables 870
Inserting DataTables into DataSets 871
Obtaining Data in a DataSet 872
Processing DataTable Data Using DataTableReader Objects 873
Serializing DataTable/DataSet Objects As XML 874
Serializing DataTable/DataSet Objects in a Binary Format 876
Binding DataTable Objects to Windows Forms GUIs 877
Hydrating a DataTable from a Generic List T 878
Deleting Rows from a DataTable 881
Selecting Rows Based on Filter Criteria 882
Updating Rows Within a DataTable 885
Working with the DataView Type 885
XXXV
■ CONTENTS
Working with Data Adapters 888
A Simple Data Adapter Example 888
Mapping Database Names to Friendly Names 890
Adding Disconnected Functionality to AutoLotDAL dll 891
Defining the Initial Class Type 892
Configuring the Data Adapter Using the SqlCommandBuilder 892
Implementing GetAIIInventoryQ 894
Implementing UpdatelnventoryQ 894
Setting Your Version Number 894
Testing the Disconnected Functionality 894
Multitabled DataSet Objects and Data Relationships 896
|
any_adam_object | 1 |
author | Troelsen, Andrew W. Japikse, Philip |
author_facet | Troelsen, Andrew W. Japikse, Philip |
author_role | aut aut |
author_sort | Troelsen, Andrew W. |
author_variant | a w t aw awt p j pj |
building | Verbundindex |
bvnumber | BV042994004 |
classification_rvk | ST 250 ST 253 |
ctrlnum | (OCoLC)953261852 (DE-599)BVBBV042994004 |
discipline | Informatik |
edition | Seventh edition |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02401nam a2200577 c 4500</leader><controlfield tag="001">BV042994004</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20160921 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">151110s2015 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781484213339</subfield><subfield code="c">pbk</subfield><subfield code="9">978-1-4842-1333-9</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)953261852</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV042994004</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-29T</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-473</subfield><subfield code="a">DE-703</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 253</subfield><subfield code="0">(DE-625)143628:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Troelsen, Andrew W.</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="240" ind1="1" ind2="0"><subfield code="a">C# and the .NET platform</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">C# 6.0 and the .NET 4.6 framework</subfield><subfield code="c">Andrew Troelsen, Philip Japikse</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">Seventh edition</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">New York</subfield><subfield code="b">Apress</subfield><subfield code="c">[2015]</subfield></datafield><datafield tag="264" ind1=" " ind2="4"><subfield code="c">© 2015</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">lxxiii, 1625 Seiten</subfield><subfield code="b">Illustrationen</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">For professionals by professionals</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">ADO.NET</subfield><subfield code="0">(DE-588)4678430-5</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Microsoft dot net</subfield><subfield code="0">(DE-588)4645646-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">C sharp</subfield><subfield code="0">(DE-588)4616843-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Informatik</subfield><subfield code="0">(DE-588)4026894-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Microsoft dot net 4.6</subfield><subfield code="0">(DE-588)1083270699</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">C sharp 6.0</subfield><subfield code="0">(DE-588)1078640599</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">C sharp 6.0</subfield><subfield code="0">(DE-588)1078640599</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Microsoft dot net 4.6</subfield><subfield code="0">(DE-588)1083270699</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Informatik</subfield><subfield code="0">(DE-588)4026894-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="1"><subfield code="a">C sharp</subfield><subfield code="0">(DE-588)4616843-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="2"><subfield code="a">Microsoft dot net</subfield><subfield code="0">(DE-588)4645646-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="2" ind2="0"><subfield code="a">ADO.NET</subfield><subfield code="0">(DE-588)4678430-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="2" ind2=" "><subfield code="8">2\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Japikse, Philip</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe</subfield><subfield code="z">978-1-4842-1332-2</subfield></datafield><datafield tag="780" ind1="0" ind2="0"><subfield code="i">Vorangegangen ist</subfield><subfield code="a">Pro C# 5.0 and the .NET 4.5 Framework</subfield><subfield code="w">(DE-604)BV041215633</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HEBIS Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028419399&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-028419399</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">2\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield></record></collection> |
id | DE-604.BV042994004 |
illustrated | Illustrated |
indexdate | 2024-07-10T07:14:34Z |
institution | BVB |
isbn | 9781484213339 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-028419399 |
oclc_num | 953261852 |
open_access_boolean | |
owner | DE-29T DE-11 DE-473 DE-BY-UBG DE-703 |
owner_facet | DE-29T DE-11 DE-473 DE-BY-UBG DE-703 |
physical | lxxiii, 1625 Seiten Illustrationen |
publishDate | 2015 |
publishDateSearch | 2015 |
publishDateSort | 2015 |
publisher | Apress |
record_format | marc |
series2 | For professionals by professionals |
spelling | Troelsen, Andrew W. Verfasser aut C# and the .NET platform C# 6.0 and the .NET 4.6 framework Andrew Troelsen, Philip Japikse Seventh edition New York Apress [2015] © 2015 lxxiii, 1625 Seiten Illustrationen txt rdacontent n rdamedia nc rdacarrier For professionals by professionals ADO.NET (DE-588)4678430-5 gnd rswk-swf Microsoft dot net (DE-588)4645646-6 gnd rswk-swf C sharp (DE-588)4616843-6 gnd rswk-swf Informatik (DE-588)4026894-9 gnd rswk-swf Microsoft dot net 4.6 (DE-588)1083270699 gnd rswk-swf C sharp 6.0 (DE-588)1078640599 gnd rswk-swf C sharp 6.0 (DE-588)1078640599 s Microsoft dot net 4.6 (DE-588)1083270699 s DE-604 Informatik (DE-588)4026894-9 s C sharp (DE-588)4616843-6 s Microsoft dot net (DE-588)4645646-6 s 1\p DE-604 ADO.NET (DE-588)4678430-5 s 2\p DE-604 Japikse, Philip Verfasser aut Erscheint auch als Online-Ausgabe 978-1-4842-1332-2 Vorangegangen ist Pro C# 5.0 and the .NET 4.5 Framework (DE-604)BV041215633 HEBIS Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028419399&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p cgwrk 20201028 DE-101 https://d-nb.info/provenance/plan#cgwrk 2\p cgwrk 20201028 DE-101 https://d-nb.info/provenance/plan#cgwrk |
spellingShingle | Troelsen, Andrew W. Japikse, Philip C# 6.0 and the .NET 4.6 framework ADO.NET (DE-588)4678430-5 gnd Microsoft dot net (DE-588)4645646-6 gnd C sharp (DE-588)4616843-6 gnd Informatik (DE-588)4026894-9 gnd Microsoft dot net 4.6 (DE-588)1083270699 gnd C sharp 6.0 (DE-588)1078640599 gnd |
subject_GND | (DE-588)4678430-5 (DE-588)4645646-6 (DE-588)4616843-6 (DE-588)4026894-9 (DE-588)1083270699 (DE-588)1078640599 |
title | C# 6.0 and the .NET 4.6 framework |
title_alt | C# and the .NET platform |
title_auth | C# 6.0 and the .NET 4.6 framework |
title_exact_search | C# 6.0 and the .NET 4.6 framework |
title_full | C# 6.0 and the .NET 4.6 framework Andrew Troelsen, Philip Japikse |
title_fullStr | C# 6.0 and the .NET 4.6 framework Andrew Troelsen, Philip Japikse |
title_full_unstemmed | C# 6.0 and the .NET 4.6 framework Andrew Troelsen, Philip Japikse |
title_old | Pro C# 5.0 and the .NET 4.5 Framework |
title_short | C# 6.0 and the .NET 4.6 framework |
title_sort | c 6 0 and the net 4 6 framework |
topic | ADO.NET (DE-588)4678430-5 gnd Microsoft dot net (DE-588)4645646-6 gnd C sharp (DE-588)4616843-6 gnd Informatik (DE-588)4026894-9 gnd Microsoft dot net 4.6 (DE-588)1083270699 gnd C sharp 6.0 (DE-588)1078640599 gnd |
topic_facet | ADO.NET Microsoft dot net C sharp Informatik Microsoft dot net 4.6 C sharp 6.0 |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028419399&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT troelsenandreww candthenetplatform AT japiksephilip candthenetplatform AT troelsenandreww c60andthenet46framework AT japiksephilip c60andthenet46framework |