37,19 €
An advanced C# beginners guide to some of the tougher parts of the C# language!
This book is for anyone who is interested in learning how to program the more advanced aspects of the C# language. Previous programming knowledge of C# is required, at least to the level of basic object-oriented programming. Readers can benefit from first reading Tom Owsiak's companion book, Beginning C# 7 Hands-On – The Core Language, as a preparation for the more advanced elements and techniques presented in this book.
Beginning C# 7 Hands-On – Advanced Language Features assumes that you've mastered the basic elements of the C# language and that you're now ready to learn the more advanced C# language and syntax, line by line, in a working Visual Studio environment. You'll learn how to code advanced C# language topics including generics, lambda expressions, and anonymous methods.
You'll learn to use query syntax to construct queries and deploy queries that perform aggregation functions. Work with C# and SQL Server 2017 to perform complex joins and stored procedures. Explore advanced file access methods, and see how to serialize and deserialize objects – all by writing working lines of code that you can run within Visual Studio.
This book is designed for beginner C# developers who have mastered the basics now, and anyone who needs a fast reference to using advanced C# language features in practical coding examples. You'll also take a look at C# through web programming with web forms.
By the time you've finished this book, you'll know all the critical advanced elements of the C# language and how to program everything from C# generics to XML, LINQ, and your first full MVC web applications. These are the advanced building blocks that you can then combine to exploit the full power of the C# programming language, line by line.
A comprehensive book that blends theory with just the right amount of practical code implementations, to help you get up and running with the C# programming language and its advanced features. You'll also get to work with other tools and technologies that complement C# programming. Each core part of the C# language is coded as you learn, and code output is tested every time to verify the syntax is working as expected, so it's easy for you to learn directly from the working code examples. Advanced-level features of C# will be used to code and work through examples.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 270
Veröffentlichungsjahr: 2017
BIRMINGHAM - MUMBAI
Copyright © 2017 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: October 2017
Production reference: 1271017
ISBN 978-1-78829-426-3
www.packtpub.com
Author
Tom Owsiak
Copy Editor
Tom Jacob
Project Editor
Suzanne Coutinho
Proofreader
Safis Editing
Acquisition Editor
Dominic Shakeshaft
Indexer
Pratik Shirodkar
Content Development Editor
Gary Schwartz
Graphics
Kirk D'Penha
Technical Editor
Gaurav Gavas
Production Coordinator
Arvindkumar Gupta
Tom Owsiak has eight years of experience as a teacher in Mathematics, Physics, Statistics, and Programming. He has worked for five years as a database programmer using various technologies such as .NET, Clipper, SQL, SQL Server, SAS, and Excel, and many related technologies.
Tom is the publisher of one of the most successful courses on Udemy, called Learn C# With Visual Studio 2013. Currently, Tom works as a Mathematics and Computer Science teacher at Mercy College in Dobbs Ferry, NY.
For support files and downloads related to your book, please visit www.PacktPub.com. Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www.packtpub.com
Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career.
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Thanks for purchasing this Packt book. At Packt, quality is at the heart of our editorial process. To help us improve, please leave us an honest review on this book's Amazon page at https://www.amazon.com/dp/1788294262.
If you'd like to join our team of regular reviewers, you can email us at [email protected]. We award our regular reviewers with free eBooks and videos in exchange for their valuable feedback. Help us be relentless in improving our products!
Preface
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
Creating a Simple Generics Class
Creating a generics class
Working with different data types
Making parameters that are generic
Displaying the values
Adding a button to Default.aspx
Initializing a collection of integers to their array and displaying the results
Changing the data types in our generics class
Running the program
Accumulating the input
Chapter review
Summary
Creating a Generic Method
Creating a button to exchange and then comparing two values
Writing a swap function
Comparing values using the CompareTo method
Introducing constraints
Completing the GenMethods class
Hardcoding the values
Running the program
Modifying the program for an additional type of comparison
Modifying the program for different data types
Chapter review
Summary
Implementing a Generic Interface to Accomplish Sorting
Adding a button to sort and display results
Creating a generics interface class
Implementing the interface
Adding a virtual function
Adding refinements
Entering the reference code
Upcasting
Downcasting
Running the program
Chapter review
Summary
Making Delegates More Flexible with Generics
Adding a summarize button to the HTML
Constructing a delegate
Assigning functions to represent the delegate
Calling the delegate
Running the program
Summary
Creating and Using Generic Dictionaries
Adding a show button to the HTML
Starting a process from a web page
Making a verbatim string
Iterating over key-value pairs
Making a directory and creating a file from Command Prompt
Chapter review
Summary
Connection Between Delegates and Lambda Expressions
Adding a Show Results button to the HTML
Adding delegates
Setting up the variables
Making objects of the delegate type
Defining lambda expressions
Operating an array
Working with actions
Chapter review
Summary
Expression-Bodied Lambdas and Expression-Bodied Members
Adding a box and a Find Max button to the HTML
Making the delegate
Defining an expression-bodied member
Converting an array of strings into an array of doubles
Creating an expression-bodied lambda
Comparing values
Specifying the parameters
Running the program
Chapter review
Summary
Anonymous Methods and Objects That Run Their Own Delegates
Adding a Show Results button to the HTML
Streamlining writing functions
Performing an action on all of the values
Making an anonymous function or method
Starting a thread
Running and modifying the program
Chapter review
Summary
C# with LINQ and Built-In Types
Adding a Show Values button to the HTML
Adding namespaces
Working with the IEnumerable generic interface
Converting an array to a list of integers
Determining the values in a collection
Converting the values back to a list
Extracting values from the list and sorting them
Running the program
Chapter review
Summary
C# with LINQ and Custom Data Types
Adding a Show People button to the HTML
Setting up a database
Making a custom type using LINQ
Setting up an array of people
Querying the array
Running the program
Chapter review
Summary
Using Query Syntax to Construct Queries
Adding a show button to the HTML
Creating a decimal salary array
Working with range variables
Selecting a salary range and putting it in descending order
Displaying the results
Observing deferred execution
Making a dictionary
Working with key-value pairs
Querying the data in the key-value pairs
Running the program
Chapter review
Summary
Queries That Perform Aggregation Functions
Adding a show button to the HTML
Creating an array
Averaging the values in a list
Displaying the results
Using the Count function
Working with a list of lists
Adding students to the classList
Summarizing the information in the classList
Running the program
Chapter review
Summary
Using LINQ to Summarize Tuples
Adding a show tuple summary values button to the HTML
Introducing tuples
Adding namespaces
Making a list with a tuple
Returning the tuples
Making a list of doubles
Summarizing the list
Displaying the results
Running the program
Chapter review
Summary
Summarizing Results with Grouping
Adding a Show Results button to the HTML
Adding namespaces
Creating the student class and defining fields
Making a list of students
Grouping names
Displaying the grouped results
Chapter review
Summary
Joining Datasets with Inner Joins
Adding a Join Classes button to the HTML
Adding the namespaces
Creating the person and car classes
Making person objects
Making car objects
Making a list of owners and their cars
Joining the owners and car lists
Getting and displaying the results
Running the program
Chapter review
Summary
Downloading, Installing, and Running SQL Server 2017
Downloading SQL Server 2017 express
Selecting the installation type
Installing the package
Working with SQL server inside Visual Studio
Creating a SQL server database
Adding and defining a table
Adding fields to the table
Updating the structure of the database
Chapter review
Summary
Writing Code to Manually Connect to a Table and Retrieve Records
Adding a show records button to the HTML
Adding a namespace
Making the connection string
Connecting to SQL Server
Catching exceptions
Displaying errors
Opening the connection
Working with the SQL Server data reader
Running the program
Chapter review
Summary
Inserting Records into Tables Using Stored Procedures
Adding text boxes and a button to the HTML
Reviewing what you created already in SQL Server
Creating a new stored procedure
Updating the database structure
Adding a namespace
Building the connection string
Initializing the connection
Catching exceptions
Trying out commands
Adding the parameters
Saving the information for later retrieval
Recognizing the role of indexers
Running the program
Chapter review
Summary
Using the Nullable Feature to Make Apps More Stable
Adding a Show People button to the HTML
Adding a field to the people database
Modifying the dbo.People table
Writing the code for this project
Creating the person class
Making the properties
Making the list of people
Building the connection string
Entering the SQL-related code
Adding people to the list from the table
Displaying the records
Running the program
Chapter review
Summary
Connecting a Chart Control to SQL Server
Placing a chart into the HTML page
Adding a button to the HTML page
Adding a new table to the People database
Enabling auto-incrementation
Adding values to the new table
Coding the project
Adding a namespace
Building the connection string
Writing a SQL query
Making the command object
Opening the connection and making a SQL data reader
Running the program
Modifying the program to display the Y values
Chapter review
Summary
Using LINQ to Operate on Tables from SQL Server
Changing the data in the ExperimentValues table
Summarizing the fields
Adding the namespaces
Building the connection string
Making the SQL connection
Making an adapter
Making a data table
Populating the table with data
Displaying the summed values
Running the program
Adding comments
Chapter review
Summary
Creating a Page That Saves Text to Disk
Creating an application to save text
Creating the user interface for your project
Starting to code the project
Catching an exception
Creating a StreamWriter class
Creating a StreamReader class
Running the program
Chapter review
Summary
Creating a Page That Uses the File Upload Control
Starting our project from scratch
Adding a namespace
Saving a file to a specific location
Saving the file
Displaying messages to the user
Determining which files are stored in a directory
Determining the return type
Exploring the exceptions for EnumerateFiles
Catching the exceptions
Running the program
Chapter review
Summary
Serializing and Deserializing Objects
Adding two buttons to the HTML
Beginning to code the project
Adding namespaces
Creating a serializable class
Adding features to the serializable class
Defining the path for saving a file
Making a Person object
Handling unmanaged resources
Making a binary formatter
Serializing an object
Testing the program
Rebuilding an object from a hard drive
Displaying the results
Running the program
Chapter review
Summary
Having a Little Fun with Images with Pixel Manipulations
Manipulating an image
Adding a button and an image control to the HTML
Adding a namespace
Making a bitmap
Saving an image as a bitmap picture
Accessing a pixel's location
Manipulating the pixels
Converting the picture to a byte array
Sending out the image URL
Running the program
Chapter review
Summary
Saving an Image to SQL Server
Adding buttons and a list box to HTML
Creating a database table to store the files
Storing image files on your hard drive
Adding namespaces
Coding the application
Testing the scanning the folder function
Building the connection string
Using of the connection string
Running the program
Chapter review
Summary
Creating and Using an XML File
Adding a button to HTML
Coding the XML
Adding a namespace
Loading the XML file into your program
Iterating over the contents of the XML file
Displaying the results
Running the program
Chapter review
Summary
Creating XML Files with C#
Adding a button to HTML
Adding namespaces
Coding the XmlWriter settings
Writing to the hard drive
Formatting the results
Running the program
Chapter review
Summary
Querying XML Documents with LINQ
Adding a text box and a button to HTML
Adding namespaces
Clearing the output
Building an element tree
Saving the store XML file
Testing the program
Searching for items that meet a specific criteria
Selecting among the items that meet the search criteria
Displaying the results
Running the program
Chapter review
Summary
Beginning C# 7 Hands-On – Advanced Language Featuresassumes that you’ve mastered the basic elements of the C# language and that you're now ready to learn the more advanced C# language and syntax, line by line, in a working Visual Studio environment. You'll learn how to code advanced C# language topics including generics, lambda expressions, and anonymous methods. You'll learn to use query syntax to construct queries and deploy queries that perform aggregation functions. You'll work with C# 7 and SQL Server 2017 to perform complex joins and stored procedures. Explore advanced file access methods, and see how to serialize and deserialize objects—all by writing working lines of code that you can run within Visual Studio. You'll also take a look at C# through web programming with web forms. By the time you’ve finished this book, you’ll know all the critical advanced elements of the C# language and how to program everything from C# generics to XML, LINQ, and your first full MVC web applications. These are the advanced building blocks that you can then combine to exploit the full power of the C# programming language, line by line. This book is designed for beginner C# developers who have mastered the basics now, and for anyone who needs a fast reference to using advanced C# language features in practical coding examples.
Visual Studio 2017, which will install and run on Windows 7 or above, and 2 GB or 4 GB of RAM is recommended. A minimum 20-50 GB of hard disk space is essential for typical installations.
This book will appeal to anyone who is interested in learning how to program in C#. Previous programming experience will help you get through the initial sections with ease, although it's not mandatory to possess any experience at all.
In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning. Code words in text, database table names, folder names, filenames, file extensions, path names, dummy URLs, user input, and Twitter handles are shown as follows: "Specifically, Default.aspx is a file that contains the markup of the elements on the web page."
A block of code is set as follows:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"> <asp:ListItem>Monday</asp:ListItem> <asp:ListItem>Tuesday</asp:ListItem> <asp:ListItem>Wednesday</asp:ListItem></asp:DropDownList>
When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"> <asp:ListItem>
Monday
</asp:ListItem> <asp:ListItem>
Tuesday
</asp:ListItem> <asp:ListItem>
Wednesday
</asp:ListItem></asp:DropDownList>
New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "If you wish, click on Browse and save the file to a location you choose and click on OK."
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of. To send us general feedback, simply email [email protected], and mention the book's title in the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files emailed directly to you. You can download the code files by following these steps:
Log in or register to our website using your email address and password.
Hover the mouse pointer on the
SUPPORT
tab at the top.
Click on
Code Downloads & Errata
.
Enter the name of the book in the
Search
box.
Select the book for which you're looking to download the code files.
Choose from the drop-down menu where you purchased this book from.
Click on
Code Download
.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
WinRAR / 7-Zip for Windows
Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux
The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/Beginning-CSharp-7-Hands-On-Advanced-Language-Features. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!
We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from https://www.packtpub.com/sites/default/files/downloads/BeginningCSharp7HandsOnAdvancedLanguageFeatures_ColorImages.pdf.
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title. To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.
Piracy of copyrighted material on the internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the internet, please provide us with the location address or website name immediately so that we can pursue a remedy. Please contact us at [email protected] with a link to the suspected pirated material. We appreciate your help in protecting our authors and our ability to bring you valuable content.
If you have a problem with any aspect of this book, you can contact us at [email protected], and we will do our best to address the problem.
In this chapter, you will look at the basics of making a simple generic class so that one class can operate on many different data types. A great benefit of generics is flexibility.
Bring up a project, and go to Solution Explorer; right-click, select Add, and click on Class. Name the class GenericsClass; a simple generics class. Then, click on OK. When the Visual Studio message comes up, click on Yes.
For our purposes, you don't need any of the using System lines at the top, nor any of the comments underneath, so delete them. Your initial screen should look like Figure 1.1.1:
Now, let's put a <T> symbol after where it says public class GenericsClass, as follows:
public class GenericsClass<T>
This means that this single class can work equally well with several different data types. Next, enter the following beneath the open curly brace under the preceding line:
private T[] vals;
Enter the following comment directly above this line:
//generic array instance variable
In other words, this will operate equally well on doubles, decimals, integers, and so on.
Now, let's take a look at Default.aspx. The only thing we really need to do at this time is to add a Button control. For this, go to Toolbox and grab a Button control from there. Drag and drop it below the line beginning with <form id=... (you can delete the <div> lines, as we won't be needing them). Change the text on the Button control to, for example, Display Values. Your complete Default.aspx file should look like the one shown in Figure 1.1.2:
Now, go to the Design view. Our very simple interface is shown in Figure 1.1.3:
Now, let's take a look. When you run this code and click on the Display Values button, your screen will look like the one shown in Figure 1.1.4:
