Muutke küpsiste eelistusi

E-raamat: Programming C# 10

  • Formaat: 836 pages
  • Ilmumisaeg: 05-Aug-2022
  • Kirjastus: O'Reilly Media
  • Keel: eng
  • ISBN-13: 9781098117788
  • Formaat - PDF+DRM
  • Hind: 63,77 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: 836 pages
  • Ilmumisaeg: 05-Aug-2022
  • Kirjastus: O'Reilly Media
  • Keel: eng
  • ISBN-13: 9781098117788

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

C# is undeniably one of the most versatile programming languages available to engineers today. With this comprehensive guide, you'll learn just how powerful the combination of C# and .NET can be. Author Ian Griffiths guides you through C# 10.0 and .NET 6 fundamentals and techniques for building cloud, web, and desktop applications.

Designed for experienced programmers, this book provides many code examples to help you work with the nuts and bolts of C#, such as generics, LINQ, and asynchronous programming features. You'll get up to speed on .NET 6 and the latest C# 9.0 and 10.0 additions, including records, enhanced pattern matching, and new features designed to remove "ceremony" to improve productivity.

Understand how .NET has changed in the most recent releases, and learn what it means for application development Select the most appropriate C# language features for any task Learn when to use the new features and when to stick with older ones Examine the range of functionality available in .NET's class libraries Learn how you can apply these class libraries to practical programming tasks Explore numerous small additions to .NET that improve expressiveness "Unlike books that focus on Visual Studio and technologies that interact with C#, this one covers the core language, and mastery of this core is essential to successfully building good software. It covers important concepts followed by generous code examples to explain them. It's thorough, detailed, and gets at the nooks and crannies of the language rarely covered elsewhere. It's a complete course on C#." --Jeremy Morgan Software/DevOps engineer

Ian Griffiths has worked in various aspects of computing, including computer networking, embedded real-time systems, broadcast television systems, medical imaging, and all forms of cloud computing. Ian is a Technical Fellow at endjin, and a Microsoft MVP in Developer Technologies. He's the author of several O'Reilly books and has written courses on Windows Presentation Foundation (WPF) and TPL Tables. Technology brings him joy.
Preface xvii
1 Introducing C#
1(30)
Why C#?
2(2)
Managed Code and the CLR
4(2)
C# Prefers Generality to Specialization
6(1)
C# Standards and Implementations
7(1)
Many NETs
7(2)
Release Cycles and Long Term Support
9(1)
Target Multiple NET Versions with NET Standard
10(1)
Visual Studio, Visual Studio Code, and JetBrains Rider
11(3)
Anatomy of a Simple Program
14(5)
Writing a Unit Test
19(3)
Namespaces
22(5)
Classes
27(2)
Unit Tests
29(1)
Summary
30(1)
2 Basic Coding in C#
31(76)
Local Variables
32(6)
Scope
38(1)
Variable Name Ambiguity
39(2)
Local Variable Instances
41(1)
Statements and Expressions
42(1)
Statements
42(2)
Expressions
44(6)
Comments and Whitespace
50(2)
Preprocessing Directives
52(1)
Compilation Symbols
52(2)
#error and #warning
54(1)
#line
54(1)
#pragma
55(1)
#nullable
56(1)
#region and #endregion
56(1)
Fundamental Data Types
57(1)
Numeric Types
57(11)
Booleans
68(1)
Strings and Characters
69(7)
Tuples
76(4)
Dynamic
80(1)
Object
81(1)
Operators
82(6)
Flow Control
88(1)
Boolean Decisions with if Statements
88(2)
Multiple Choice with switch Statements
90(2)
Loops: while and do
92(1)
C-Style for Loops
93(2)
Collection Iteration with foreach Loops
95(1)
Patterns
96(5)
Combining and Negating Patterns
101(1)
Relational Patterns
102(1)
Getting More Specific with when
103(1)
Patterns in Expressions
103(3)
Summary
106(1)
3 Types
107(100)
Classes
107(3)
Static Members
110(2)
Static Classes
112(2)
Records
114(5)
References and Nulls
119(5)
Banishing Null with Non-Nullable References
124(7)
Structs
131(5)
When to Write a Value Type
136(4)
Guaranteeing Immutability
140(1)
Record Structs
141(1)
Class, Structs, Records, or Tuples?
142(2)
Members
144(1)
Accessibility
144(1)
Fields
144(3)
Constructors
147(11)
Deconstructors
158(2)
Methods
160(17)
Properties
177(12)
Operators
189(3)
Events
192(1)
Nested Types
192(1)
Interfaces
193(3)
Default Interface Implementation
196(2)
Enums
198(3)
Other Types
201(1)
Anonymous Types
202(2)
Partial Types and Methods
204(2)
Summary
206(1)
4 Generics
207(20)
Generic Types
208(2)
Constraints
210(2)
Type Constraints
212(2)
Reference Type Constraints
214(3)
Value Type Constraints
217(1)
Value Types All the Way Down with Unmanaged Constraints
217(1)
Not Null Constraints
218(1)
Other Special Type Constraints
218(1)
Multiple Constraints
218(1)
Zero-Like Values
219(1)
Generic Methods
220(1)
Type Inference
221(1)
Generics and Tuples
222(1)
Inside Generics
223(3)
Summary
226(1)
5 Collections
227(52)
Arrays
227(4)
Array Initialization
231(1)
Searching and Sorting
232(5)
Multidimensional Arrays
237(3)
Copying and Resizing
240(1)
List<T>
241(3)
List and Sequence Interfaces
244(7)
Implementing Lists and Sequences
251(1)
Implementing IEnumerable<T> with Iterators
251(5)
Collection<T>
256(1)
ReadOnlyCollection<T>
256(1)
Addressing Elements with Index and Range Syntax
257(1)
System Index
258(2)
System.Range
260(3)
Supporting Index and Range in Your Own Types
263(3)
Dictionaries
266(3)
Sorted Dictionaries
269(1)
Sets
270(2)
Queues and Stacks
272(1)
Linked Lists
273(1)
Concurrent Collections
274(1)
Immutable Collections
275(2)
Summary
277(2)
6 Inheritance
279(40)
Inheritance and Conversions
281(3)
Interface Inheritance
284(1)
Generics
285(1)
Covariance and Contravariance
286(6)
System.Object
292(1)
The Ubiquitous Methods of System.Object
293(1)
Accessibility and Inheritance
294(1)
Virtual Methods
295(3)
Abstract Methods
298(2)
Inheritance and Library Versioning
300(6)
Sealed Methods and Classes
306(1)
Accessing Base Members
307(1)
Inheritance and Construction
308(4)
Record Types
312(4)
Records, Inheritance, and the with Keyword
316(1)
Special Base Types
317(1)
Summary
318(1)
7 Object Lifetime
319(44)
Garbage Collection
320(2)
Determining Reachability
322(2)
Accidentally Defeating the Garbage Collector
324(3)
Weak References
327(3)
Reclaiming Memory
330(6)
Garbage Collector Modes
336(3)
Temporarily Suspending Garbage Collections
339(1)
Accidentally Defeating Compaction
340(3)
Forcing Garbage Collections
343(1)
Destructors and Finalization
344(4)
IDisposable
348(7)
Optional Disposal
355(1)
Boxing
356(5)
Boxing Nullable<T>
361(1)
Summary
362(1)
8 Exceptions
363(30)
Exception Sources
365(1)
Exceptions from APIs
366(3)
Failures Detected by the Runtime
369(1)
Handling Exceptions
370(1)
Exception Objects
371(2)
Multiple catch Blocks
373(1)
Exception Filters
374(2)
Nested try Blocks
376(1)
Finally Blocks
377(2)
Throwing Exceptions
379(2)
Rethrowing Exceptions
381(3)
Failing Fast
384(1)
Exception Types
384(3)
Custom Exceptions
387(2)
Unhandled Exceptions
389(2)
Summary
391(2)
9 Delegates, Lambdas, and Events
393(40)
Delegate Types
394(2)
Creating a Delegate
396(4)
Multicast Delegates
400(1)
Invoking a Delegate
401(1)
Common Delegate Types
402(2)
Type Compatibility
404(2)
Behind the Syntax
406(3)
Anonymous Functions
409(4)
Captured Variables
413(8)
Lambdas and Expression Trees
421(2)
Events
423(2)
Standard Event Delegate Pattern
425(1)
Custom Add and Remove Methods
426(3)
Events and the Garbage Collector
429(1)
Events Versus Delegates
430(1)
Delegates Versus Interfaces
431(1)
Summary
432(1)
10 LINQ
433(62)
Query Expressions
434(3)
How Query Expressions Expand
437(2)
Supporting Query Expressions
439(4)
Deferred Evaluation
443(3)
LINQ, Generics, and IQueryable>T<
446(2)
Standard LINQ Operators
448(2)
Filtering
450(3)
Select
453(3)
SelectMany
456(3)
Chunking
459(1)
Ordering
460(3)
Containment Tests
463(2)
Specific Items and Subranges
465(5)
Aggregation
470(5)
Set Operations
475(1)
Whole-Sequence, Order-Preserving Operations
476(2)
Grouping
478(4)
Joins
482(3)
Conversion
485(5)
Sequence Generation
490(1)
Other LINQ Implementations
490(1)
Entity Framework Core
491(1)
Parallel LINQ (PLINQ)
491(1)
LINQ to XML
492(1)
IAsyncEnumerable<T>
492(1)
Reactive Extensions
492(1)
Summary
492(3)
11 Reactive Extensions
495(66)
Fundamental Interfaces
497(1)
IObserver<T>
498(1)
IObservable<T>
499(8)
Publishing and Subscribing with Delegates
507(1)
Creating an Observable Source with Delegates
507(4)
Subscribing to an Observable Source with Delegates
511(1)
Sequence Builders
512(1)
Empty
512(1)
Never
512(1)
Return
513(1)
Throw
513(1)
Range
513(1)
Repeat
514(1)
Generate
514(1)
LINQ Queries
515(2)
Grouping Operators
517(2)
Join Operators
519(5)
SelectMany Operator
524(1)
Aggregation and Other Single-Value Operators
525(1)
Concat Operator
526(1)
Rx Query Operators
526(1)
Merge
527(2)
Windowing Operators
529(6)
The Scan Operator
535(2)
The Amb Operator
537(1)
DistinctUntilChanged
538(1)
Schedulers
538(1)
Specifying Schedulers
539(2)
Built-in Schedulers
541(1)
Subjects
542(1)
Subject<T>
542(2)
BehaviorSubject<T>
544(1)
ReplaySubject<T>
544(1)
AsyncSubject<T>
545(1)
Adaptation
545(1)
IEnumerable<T> and IAsyncEnumerable<T>
546(1)
.NET Events
547(2)
Asynchronous APIs
549(2)
Timed Operations
551(1)
Interval
551(2)
Timer
553(1)
Timestamp
553(1)
TimeInterval
554(1)
Throttle
555(1)
Sample
555(1)
Timeout
555(1)
Windowing Operators
556(1)
Delay
557(1)
DelaySubscription
557(1)
Reaqtor---Rx as a Service
558(1)
Summary
559(2)
12 Assemblies
561(30)
Anatomy of an Assembly
562(1)
.NET Metadata
563(1)
Resources
563(1)
Multifile Assemblies
563(1)
Other PE Features
564(2)
Type Identity
566(3)
Loading Assemblies
569(1)
Assembly Resolution
570(4)
Explicit Loading
574(1)
Isolation and Plug-ins with AssemblyLoadContext
575(2)
Assembly Names
577(1)
Strong Names
577(3)
Version
580(3)
Version Numbers and Assembly Loading
583(1)
Culture
584(3)
Protection
587(1)
Target Frameworks and NET Standard
588(2)
Summary
590(1)
13 Reflection
591(22)
Reflection Types
592(1)
Assembly
593(4)
Module
597(1)
MemberInfo
597(3)
Type and TypeInfo
600(5)
MethodBase, ConstructorInfo, and MethodInfo
605(2)
ParameterInfo
607(1)
FieldInfo
607(1)
PropertyInfo
608(1)
EventInfo
608(1)
Reflection Contexts
609(2)
Summary
611(2)
14 Attributes
613(24)
Applying Attributes
613(3)
Attribute Targets
616(2)
Compiler-Handled Attributes
618(8)
CLR-Handled Attributes
626(4)
Defining and Consuming Attributes
630(1)
Attribute Types
631(2)
Retrieving Attributes
633(2)
Metadata-Only Load
635(1)
Summary
636(1)
15 Files and Streams
637(48)
The Stream Class
638(2)
Position and Seeking
640(1)
Flushing
641(1)
Copying
642(1)
Length
642(1)
Disposal
643(1)
Asynchronous Operation
644(1)
Concrete Stream Types
645(1)
One Type, Many Behaviors
646(2)
Random Access and Scatter/Gather I/O Without Stream
648(1)
Text-Oriented Types
649(1)
TextReader and Text Writer
650(2)
Concrete Reader and Writer Types
652(2)
Encoding
654(4)
Files and Directories
658(1)
FileStream Class
658(4)
File Class
662(4)
Directory Class
666(1)
Path Class
667(2)
FileInfo, DirectoryInfo, and FileSystemInfo
669(1)
Known Folders
670(1)
Serialization
671(1)
BinaryReader, BinaryWriter, and BinaryPrimitives
672(1)
CLR Serialization
673(1)
JSON
674(8)
Summary
682(3)
16 Multithreading
685(58)
Threads
685(2)
Threads, Variables, and Shared State
687(3)
Thread-Local Storage
690(3)
The Thread Class
693(1)
The Thread Pool
694(3)
Thread Affinity and SynchronizationContext
697(2)
ExecutionContext
699(2)
Synchronization
701(1)
Monitors and the lock Keyword
702(7)
SpinLock
709(2)
Reader/Writer Locks
711(1)
Event Objects
712(3)
Barrier
715(1)
CountdownEvent
716(1)
Semaphores
716(1)
Mutex
717(1)
Interlocked
718(2)
Lazy Initialization
720(2)
Other Class Library Concurrency Support
722(2)
Tasks
724(1)
The Task and Task<T> Classes
724(6)
Continuations
730(2)
Schedulers
732(2)
Error Handling
734(1)
Custom Threadless Tasks
734(2)
Parent/Child Relationships
736(1)
Composite Tasks
736(1)
Other Asynchronous Patterns
737(1)
Cancellation
738(1)
Parallelism
739(1)
The Parallel Class
739(2)
Parallel LINQ
741(1)
TPL Dataflow
741(1)
Summary
741(2)
17 Asynchronous Language Features
743(30)
Asynchronous Keywords: async and await
744(4)
Execution and Synchronization Contexts
748(2)
Multiple Operations and Loops
750(6)
Returning a Task
756(2)
Applying async to Nested Methods
758(1)
The await Pattern
759(4)
Error Handling
763(3)
Validating Arguments
766(1)
Singular and Multiple Exceptions
767(2)
Concurrent Operations and Missed Exceptions
769(2)
Summary
771(2)
18 Memory Efficiency
773(20)
(Don't) Copy That
774(4)
Representing Sequential Elements with Span<T>
778(3)
Utility Methods
781(1)
Stack Only
781(1)
Representing Sequential Elements with Memory<T>
782(1)
ReadOnlySequence<T>
782(1)
Processing Data Streams with Pipelines
783(2)
Processing JSON in ASP.NET Core
785(6)
Summary
791(2)
Index 793
Ian has worked in various aspects of computing, including computer networking, embedded real-time systems, broadcast television systems, medical imaging, and all forms of cloud computing. Ian is a Technical Fellow at endjin, and Microsoft MVP in Developer Technologies. He is the author of several O'Reilly books, and has written Pluralsight courses on WPF and the TPL. Technology brings him joy.