Programmers concentrate on crafting new classes and reusing existing classes. Many class libraries exist, and others are being developed worldwide. Software is then constructed from existing, well-defined, carefully tested, well-documented, portable, performancetuned, widely available components. This kind of software reusability speeds the development of powerful, high-quality software. Rapid application development (RAD) is of great interest today.
Microsoft provides C# programmers with thousands of classes in the .NET Framework Class Library to help them implement C# applications. The .NET Framework enables C# developers to work to achieve true reusability and rapid application development. C# programmers can focus on the task at hand when developing their applications and leave the lower-level details to the classes of the FCL. For example, to write an application that draws graphics, an FCL programmer does not require knowledge of graphics on every computer platform where the application will execute. Instead, the programmer can concentrate on learning .NET's graphics capabilities (which are quite substantial and growing) and write a C# application that draws the graphics, using FCL classes such as those in the System.Drawing namespace. When the application executes on a given computer, it is the job of the CLR to translate the MSIL commands compiled from the C# code into commands that the local computer can understand.
The FCL classes enable C# programmers to bring new applications to market faster by using preexisting, tested components. Not only does this reduce development time, it also improves the programmer's ability to debug and maintain applications. To take advantage of C#'s many capabilities, it is essential that programmers familiarize themselves with the variety of classes in the .NET Framework. There are many Web-based resources at msdn2.microsoft.com to help you with this task. The primary resource for learning about the FCL is the .NET Framework Reference in the MSDN library, which can be found at
msdn2.microsoft.com/en-us/library/ms229335
In addition, msdn2.microsoft.com provides many other resources, including tutorials, articles and sites specific to individual C# topics.
To realize the full potential of software reusability, we need to improve cataloging schemes, licensing schemes, protection mechanisms that prevent master copies of classes from being corrupted, description schemes that system designers use to determine whether existing classes meet their needs, browsing mechanisms that determine what classes are available and how closely they meet software developer requirements, and the like. Many interesting research and development problems have been solved and many more need to be solved. These problems will likely be solved because the potential value of increased software reuse is enormous.
Preface
Index
Introduction to Computers, the Internet and Visual C#
Introduction to the Visual C# 2005 Express Edition IDE
Introduction to C# Applications
Introduction to Classes and Objects
Control Statements: Part 1
Control Statements: Part 2
Methods: A Deeper Look
Arrays
Classes and Objects: A Deeper Look
Object-Oriented Programming: Inheritance
Polymorphism, Interfaces & Operator Overloading
Exception Handling
Graphical User Interface Concepts: Part 1
Graphical User Interface Concepts: Part 2
Multithreading
Strings, Characters and Regular Expressions
Graphics and Multimedia
Files and Streams
Extensible Markup Language (XML)
Database, SQL and ADO.NET
ASP.NET 2.0, Web Forms and Web Controls
Web Services
Networking: Streams-Based Sockets and Datagrams
Searching and Sorting
Data Structures
Generics
Collections
Appendix A. Operator Precedence Chart
Appendix B. Number Systems
Appendix C. Using the Visual Studio 2005 Debugger
Appendix D. ASCII Character Set
Appendix E. Unicode®
Appendix F. Introduction to XHTML: Part 1
Appendix G. Introduction to XHTML: Part 2
Appendix H. HTML/XHTML Special Characters
Appendix I. HTML/XHTML Colors
Appendix J. ATM Case Study Code
Appendix K. UML 2: Additional Diagram Types
Appendix L. Simple Types
Index