ebook img

Illustrated C# 2012, 4th Edition PDF

750 Pages·2012·22.142 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Illustrated C# 2012, 4th Edition

www.it-ebooks.info For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them. www.it-ebooks.info Contents at a Glance  About the Author...............................................................................................xxvii  About the Technical Reviewer.........................................................................xxviii  Acknowledgments.............................................................................................xxix  Introduction........................................................................................................xxx  Chapter 1: C# and the .NET Framework..................................................................1  Chapter 2: Overview of C# Programming.............................................................15  Chapter 3: Types, Storage, and Variables.............................................................33  Chapter 4: Classes: The Basics.............................................................................49  Chapter 5: Methods ..............................................................................................67  Chapter 6: More About Classes...........................................................................113  Chapter 7: Classes and Inheritance....................................................................159  Chapter 8: Expressions and Operators...............................................................201  Chapter 9: Statements........................................................................................239  Chapter 10: Structs.............................................................................................269  Chapter 11: Enumerations..................................................................................279  Chapter 12: Arrays..............................................................................................293  Chapter 13: Delegates.........................................................................................323  Chapter 14: Events..............................................................................................347  Chapter 15: Interfaces........................................................................................363  Chapter 16: Conversions.....................................................................................391  Chapter 17: Generics..........................................................................................421  Chapter 18: Enumerators and Iterators..............................................................461  Chapter 19: Introduction to LINQ........................................................................483 iv www.it-ebooks.info  Chapter 20: Introduction to Asynchronous Programming..................................541  Chapter 21: Namespaces and Assemblies..........................................................603  Chapter 22: Exceptions.......................................................................................631  Chapter 23: Preprocessor Directives..................................................................651  Chapter 24: Reflection and Attributes................................................................663  Chapter 25: Other Topics....................................................................................691  Index...................................................................................................................719 v www.it-ebooks.info Introduction The purpose of this book is to teach you the syntax and semantics of the C# programming language in as clear a manner as possible. C# is a wonderful programming language! I love coding in it. I don’t know how many programming languages I’ve learned over the years, but C# is by far my favorite. I hope that by using this book, you can gain an appreciation for C#’s beauty and elegance. Most books teach programming primarily using text. That’s great for novels, but many of the important concepts of programming languages can best be understood through a combination of words, figures, and tables. Many of us think visually, and figures and tables can help clarify and crystallize our understanding of a concept. In several years of teaching programming languages, I have found that the pictures I drew on the whiteboards were the things that most quickly helped the students understand the concepts I was trying to convey. Illustrations alone, however, are not sufficient to explain a programming language and platform. The goal of this book is to find the best combination of words and illustrations to give you a thorough understanding of the language, and to allow the book to serve as a reference resource as well. This book is written for anyone who wants an introduction to the C# programming language— from the novice to the seasoned programmer. For those just getting started in programming, I've included the basics. For seasoned programmers, the content is laid out succinctly, and in a form that allows you to go directly to the information required without having to wade through oceans of words. For both sets of programmers, the content itself is presented graphically, in a form that should make the language easy to learn. Enjoy! Audience, Source Code, and Contact Information This book was written for beginning and intermediate programmers, and programmers coming from another language such as Visual Basic or Java. I have tried to remain focused on the C# language itself, and give an in-depth description of the language and all its parts, rather than straying off into coverage of .NET or programming practices. I wanted to keep this book as succinct as I could while still covering the language thoroughly—and there are other good books covering these other topics. You can download the source code for all the example programs from the Apress web site or from the web site for this book, which is www.illustratedcsharp.com. And although I can’t answer specific questions about your code, you can contact me with suggestions and feedback about the book at [email protected]. I hope this book helps making learning C# an enjoyable experience for you! Take care. Dan Solis xxx www.it-ebooks.info C H A P T E R 1 C# and the .NET Framework  Before .NET  Enter Microsoft .NET  Compiling to the Common Intermediate Language  Compiling to Native Code and Execution  The Common Language Runtime  The Common Language Infrastructure  Review of the Acronyms  The Evolution of C# 1 www.it-ebooks.info CHAPTER 1  C# AND THE .NET FRAMEWORK Before .NET The C# programming language was designed for developing programs for Microsoft’s .NET Framework. This chapter gives a brief look at where .NET came from and its basic architecture. To start off, let’s get the name right: C# is pronounced “see sharp.”1 Windows Programming in the Late 1990s In the late 1990s, Windows programming using the Microsoft platform had fractured into a number of branches. Most programmers were using Visual Basic, C, or C++. Some C and C++ programmers were using the raw Win32 API, but most were using Microsoft Foundation Classes (MFC). Others had moved to the Component Object Model (COM). All these technologies had their own problems. The raw Win32 API was not object-oriented, and using it required a lot more work than MFC. MFC was object-oriented but was inconsistent and getting old. COM, although conceptually simple, was complex in its actual coding and required lots of ugly, inelegant plumbing. Another shortcoming of all these programming technologies was that they were aimed primarily at developing code for the desktop rather than the Internet. At the time, programming for the Web was an afterthought and seemed very different from coding for the desktop. Goals for the Next-Generation Platform Services What we really needed was a new start—an integrated, object-oriented development framework that would bring consistency and elegance back to programming. To meet this need, Microsoft set out to develop a code execution environment and a code development environment that met these goals. Figure 1-1 lists these goals. Figure 1-1. Goals for the next-generation platform Enter Microsoft .NET In 2002, Microsoft released the first version of the .NET Framework, which promised to address the old problems and meet the goals for the next-generation systems. The .NET Framework is a much more 1 I was once interviewed for a contract C# position when the Human Resources interviewer asked me how much experience I’d had programming in “see pound” (instead of “see sharp”)! It took me a moment to realize what he was talking about. 2 www.it-ebooks.info CHAPTER 1  C# AND THE .NET FRAMEWORK consistent and object-oriented environment than either the MFC or COM programming technologies Some of its features include the following: • Multiple platforms: The system runs on a broad range of computers, from servers and desktop machines to PDAs and cell phones. • Industry standards: The system uses industry-standard communication protocols, such as XML, HTTP, SOAP, JSON, and WSDL. • Security: The system can provide a much safer execution environment, even in the presence of code obtained from suspect sources. Components of the .NET Framework The .NET Framework consists of three components, as shown in Figure 1-2. The execution environment is called the Common Language Runtime (CLR). The CLR manages program execution at run time, including the following: • Memory management and garbage collection • Code safety verification • Code execution, thread management, and exception handling The programming tools include everything you need for coding and debugging, including the following: • The Visual Studio integrated development environment (IDE) • .NET-compliant compilers (e.g., C#, Visual Basic .NET, F#, IronRuby, and managed C++) • Debuggers • Web development server-side technologies, such as ASP.NET and WCF The Base Class Library (BCL) is a large class library used by the .NET Framework and available for you to use in your programs as well. Figure 1-2. Components of the .NET Framework 3 www.it-ebooks.info CHAPTER 1  C# AND THE .NET FRAMEWORK An Improved Programming Environment The .NET Framework offers programmers considerable improvements over previous Windows programming environments. The following sections give a brief overview of its features and their benefits. Object-Oriented Development Environment The CLR, the BCL, and C# are designed to be thoroughly object-oriented and act as a well-integrated environment. The system provides a consistent, object-oriented model of programming for both local programs and distributed systems. It also provides a software development interface for desktop application programming, mobile application programming, and web development, consistent across a broad range of targets, from servers to cell phones. Automatic Garbage Collection The CLR has a service called the garbage collector (GC), which automatically manages memory for you. • The GC automatically removes objects from memory that your program will no longer access. The GC relieves programmers of tasks they have traditionally had to perform, such as deallocating memory and hunting for memory leaks. This is a huge improvement, since hunting for memory leaks can be difficult and time-consuming. Interoperability The .NET Framework was designed for interoperability between different .NET languages, the operating system or Win32 DLLs, and COM. • The .NET language interoperability allows software modules written using different .NET languages to interact seamlessly. − A program written in one .NET language can use and even inherit from a class written in another .NET language, as long as certain rules are followed. − Because of its ability to easily integrate modules produced in different programming languages, the .NET Framework is sometimes described as language-agnostic. 4 www.it-ebooks.info CHAPTER 1  C# AND THE .NET FRAMEWORK • The .NET Framework provides a feature called platform invoke (P/Invoke), which allows code written for .NET to call and use code not written for .NET. It can use raw C functions imported from standard Win32 DLLs, such as the Windows APIs. • The .NET Framework also allows interoperability with COM. .NET Framework software components can call COM components, and COM components can call .NET components as if they were COM components themselves. No COM Required The .NET Framework frees the programmer from the COM legacy. If you’re coming from a COM programming environment you’ll be happy to know that, as a C# programmer, you don’t need to use any of the following: • The IUnknown interface: In COM, all objects must implement interface IUnknown. In contrast, all .NET objects derive from a single class called object. Interface programming is still an important part of .NET, but it’s no longer the central theme. • Type libraries: In COM, type information is kept in type libraries as .tlb files, which are separate from the executable code. In .NET, a program’s type information is kept bundled with the code in the program file. • Manual reference counting: In COM, the programmer had to keep track of the number of references to an object to make sure it wasn’t deleted at the wrong time. In .NET, the GC keeps track of references and removes objects only when appropriate. • HRESULT: COM used the HRESULT data type to return runtime error codes. .NET doesn’t use HRESULTs. Instead, all unexpected runtime errors produce exceptions. • The registry: COM applications had to be registered in the system registry, which holds information about the configurations of the operating system and applications. .NET applications don’t need to use the registry. This simplifies the installation and removal of programs. (However, there is something similar called the global assembly cache, which I’ll cover in Chapter 21.) Although the amount of COM code that’s currently being written is fairly small, there’s still quite a number of COM components in systems currently being used, and C# programmers sometimes need to write code that interfaces with those components. C# 4.0 introduced several new features that make that task easier. These features are covered in Chapter 25. 5 www.it-ebooks.info

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.