ebook img

Getting Started with Advanced C#: Upgrade Your Programming Skills PDF

412 Pages·2020·8.853 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 Getting Started with Advanced C#: Upgrade Your Programming Skills

Getting Started with Advanced C# Upgrade Your Programming Skills — Vaskaran Sarcar Foreword by Deepak Seshadri Getting Started with Advanced C# Upgrade Your Programming Skills Vaskaran Sarcar Foreword by Deepak Seshadri Getting Started with Advanced C#: Upgrade Your Programming Skills Vaskaran Sarcar Kolkata, West Bengal, India ISBN-13 (pbk): 978-1-4842-5933-7 ISBN-13 (electronic): 978-1-4842-5934-4 https://doi.org/10.1007/978-1-4842-5934-4 Copyright © 2020 by Vaskaran Sarcar This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Smriti Srivastava Development Editor: Laura Berendson Coordinating Editor: Shrikant Vishwakarma Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer- sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/978-1-4842-5933-7. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper This book is dedicated to those people who can listen to their inner voices and have the courage to follow their dreams despite unfavorable circumstances. Table of Contents About the Author ���������������������������������������������������������������������������������������������������xiii About the Technical Reviewer ���������������������������������������������������������������������������������xv Acknowledgments �������������������������������������������������������������������������������������������������xvii Foreword ����������������������������������������������������������������������������������������������������������������xix Introduction ������������������������������������������������������������������������������������������������������������xxi Part I: Getting Familiar with Building Blocks ����������������������������������������1 Chapter 1: Delegates ������������������������������������������������������������������������������������������������3 Definition ���������������������������������������������������������������������������������������������������������������������������������������5 Demonstration 1 ����������������������������������������������������������������������������������������������������������������������5 Q&A Session ��������������������������������������������������������������������������������������������������������������������������10 Comparing a Static Method with an Instance Method ����������������������������������������������������������������11 Demonstration 2 ��������������������������������������������������������������������������������������������������������������������12 Using Multicast Delegates ����������������������������������������������������������������������������������������������������������14 Demonstration 3 ��������������������������������������������������������������������������������������������������������������������15 Q&A Session ��������������������������������������������������������������������������������������������������������������������������17 Demonstration 4 ��������������������������������������������������������������������������������������������������������������������17 Q&A Session ��������������������������������������������������������������������������������������������������������������������������19 Demonstration 5 ��������������������������������������������������������������������������������������������������������������������21 Q&A Session ��������������������������������������������������������������������������������������������������������������������������22 Variance in Delegates �����������������������������������������������������������������������������������������������������������������24 Covariance in Delegates ��������������������������������������������������������������������������������������������������������25 Demonstration 6 ��������������������������������������������������������������������������������������������������������������������26 Contravariance in Delegates ��������������������������������������������������������������������������������������������������28 v Table of ConTenTs Demonstration 7 ��������������������������������������������������������������������������������������������������������������������28 Q&A Session ��������������������������������������������������������������������������������������������������������������������������30 Final Words ���������������������������������������������������������������������������������������������������������������������������������31 Summary�������������������������������������������������������������������������������������������������������������������������������������31 Chapter 2: Events ���������������������������������������������������������������������������������������������������33 Demonstration 1��������������������������������������������������������������������������������������������������������������������������35 Output ������������������������������������������������������������������������������������������������������������������������������������38 Analysis ���������������������������������������������������������������������������������������������������������������������������������38 Q&A Session ��������������������������������������������������������������������������������������������������������������������������������38 Creating Custom Events ��������������������������������������������������������������������������������������������������������������39 Demonstration 2 ��������������������������������������������������������������������������������������������������������������������40 Passing Data to an Event Argument ��������������������������������������������������������������������������������������������43 Demonstration 3 ��������������������������������������������������������������������������������������������������������������������43 Using Event Accessors ����������������������������������������������������������������������������������������������������������������46 Demonstration 4 ��������������������������������������������������������������������������������������������������������������������48 Q&A Session ��������������������������������������������������������������������������������������������������������������������������52 Handling Interface Events �����������������������������������������������������������������������������������������������������������53 Demonstration 5 ��������������������������������������������������������������������������������������������������������������������53 Q&A Session ��������������������������������������������������������������������������������������������������������������������������55 Handling Explicit Interface Events ����������������������������������������������������������������������������������������������55 Demonstration 6 ��������������������������������������������������������������������������������������������������������������������56 Q&A Session ��������������������������������������������������������������������������������������������������������������������������60 Demonstration 7 ��������������������������������������������������������������������������������������������������������������������61 Q&A Session ��������������������������������������������������������������������������������������������������������������������������64 Demonstration 8 ��������������������������������������������������������������������������������������������������������������������65 Final Words ���������������������������������������������������������������������������������������������������������������������������������67 Summary�������������������������������������������������������������������������������������������������������������������������������������69 vi Table of ConTenTs Chapter 3: Lambda Expressions �����������������������������������������������������������������������������71 The Usefulness of Lambda Expressions �������������������������������������������������������������������������������������71 Demonstration 1 ��������������������������������������������������������������������������������������������������������������������72 Lambda Expression with (and Without) Parameters �������������������������������������������������������������������76 Demonstration 2 ��������������������������������������������������������������������������������������������������������������������76 Types of Lambda Expressions �����������������������������������������������������������������������������������������������������78 Expression-Bodied Members ������������������������������������������������������������������������������������������������������78 Demonstration 3 ��������������������������������������������������������������������������������������������������������������������80 Demonstration 4 ��������������������������������������������������������������������������������������������������������������������82 Local Variables in a Lambda Expression �������������������������������������������������������������������������������������85 Demonstration 5 ��������������������������������������������������������������������������������������������������������������������86 Using Tuples in a Lambda Expression �����������������������������������������������������������������������������������������88 Demonstration 6 ��������������������������������������������������������������������������������������������������������������������89 Event Subscription with Lambda Expressions ����������������������������������������������������������������������������91 Demonstration 7 ��������������������������������������������������������������������������������������������������������������������91 Q&A Session ��������������������������������������������������������������������������������������������������������������������������94 Final Words ���������������������������������������������������������������������������������������������������������������������������������99 Summary�������������������������������������������������������������������������������������������������������������������������������������99 Part II: Exploring Advanced Programming ����������������������������������������101 Chapter 4: Generic Programming �������������������������������������������������������������������������103 The Motivation Behind Generics �����������������������������������������������������������������������������������������������103 Demonstration 1 ������������������������������������������������������������������������������������������������������������������104 Demonstration 2 ������������������������������������������������������������������������������������������������������������������107 Demonstration 3 ������������������������������������������������������������������������������������������������������������������110 A Quick Look into the List Class ������������������������������������������������������������������������������������������������112 Demonstration 4 ������������������������������������������������������������������������������������������������������������������113 Generic Delegates ���������������������������������������������������������������������������������������������������������������������114 Func Delegate����������������������������������������������������������������������������������������������������������������������114 Q&A Session ������������������������������������������������������������������������������������������������������������������������116 Action Delegate �������������������������������������������������������������������������������������������������������������������117 vii Table of ConTenTs Predicate Delegate ��������������������������������������������������������������������������������������������������������������118 Demonstration 5 ������������������������������������������������������������������������������������������������������������������118 Q&A Session ������������������������������������������������������������������������������������������������������������������������120 The Default Keyword in Generics ����������������������������������������������������������������������������������������������122 Demonstration 6 ������������������������������������������������������������������������������������������������������������������122 Q&A Session ������������������������������������������������������������������������������������������������������������������������124 Implementing Generic Interface ������������������������������������������������������������������������������������������������125 Demonstration 7 ������������������������������������������������������������������������������������������������������������������125 Q&A Session ������������������������������������������������������������������������������������������������������������������������128 Generic Constraints �������������������������������������������������������������������������������������������������������������������129 Demonstration 8 ������������������������������������������������������������������������������������������������������������������130 Q&A Session ������������������������������������������������������������������������������������������������������������������������133 Using Covariance and Contravariance ��������������������������������������������������������������������������������������135 Q&A Session ������������������������������������������������������������������������������������������������������������������������137 Covariance with Generic Delegate ��������������������������������������������������������������������������������������������138 Demonstration 9 ������������������������������������������������������������������������������������������������������������������139 Covariance with Generic Interfaces ������������������������������������������������������������������������������������������141 Demonstration 10 ����������������������������������������������������������������������������������������������������������������141 Contravariance with Generic Delegates ������������������������������������������������������������������������������������144 Demonstration 11 ����������������������������������������������������������������������������������������������������������������145 Contravariance with Generic Interface ��������������������������������������������������������������������������������������147 Partial Implementation ��������������������������������������������������������������������������������������������������������148 Q&A Session ������������������������������������������������������������������������������������������������������������������������148 Demonstration 12 ����������������������������������������������������������������������������������������������������������������149 Q&A Session ������������������������������������������������������������������������������������������������������������������������151 Demonstration 13 ����������������������������������������������������������������������������������������������������������������152 Self-Referencing Generic Types ������������������������������������������������������������������������������������������������154 Demonstration 14 ����������������������������������������������������������������������������������������������������������������155 Q&A Session ������������������������������������������������������������������������������������������������������������������������158 Demonstration 15 ����������������������������������������������������������������������������������������������������������������159 Q&A Session ������������������������������������������������������������������������������������������������������������������������161 viii Table of ConTenTs Final Words �������������������������������������������������������������������������������������������������������������������������������162 Summary�����������������������������������������������������������������������������������������������������������������������������������162 Chapter 5: Thread Programming ��������������������������������������������������������������������������163 Foundations in Thread Programming ����������������������������������������������������������������������������������������163 Q&A Session ������������������������������������������������������������������������������������������������������������������������166 Coding Multithreaded Programs in C# ��������������������������������������������������������������������������������������166 Using the ThreadStart Delegate ��������������������������������������������������������������������������������������������168 Demonstration 1 ������������������������������������������������������������������������������������������������������������������170 Demonstration 2 ������������������������������������������������������������������������������������������������������������������174 Q&A Session ������������������������������������������������������������������������������������������������������������������������178 Using the ParameterizedThreadStart Delegate �����������������������������������������������������������������179 Demonstration 3 ������������������������������������������������������������������������������������������������������������������179 Q&A Session ������������������������������������������������������������������������������������������������������������������������183 Demonstration 4 ������������������������������������������������������������������������������������������������������������������184 Q&A Session ������������������������������������������������������������������������������������������������������������������������190 Demonstration 5 ������������������������������������������������������������������������������������������������������������������190 Q&A Session ������������������������������������������������������������������������������������������������������������������������192 Demonstration 6 ������������������������������������������������������������������������������������������������������������������193 Q&A Session ������������������������������������������������������������������������������������������������������������������������195 Foreground Thread vs� Background Thread ������������������������������������������������������������������������������196 Demonstration 7 ������������������������������������������������������������������������������������������������������������������197 Thread Safety ����������������������������������������������������������������������������������������������������������������������������200 A Non-Synchronized Version �����������������������������������������������������������������������������������������������200 Demonstration 8 ������������������������������������������������������������������������������������������������������������������201 A Synchronized Version �������������������������������������������������������������������������������������������������������203 Demonstration 9 ������������������������������������������������������������������������������������������������������������������203 An Alternative Approach Using the Monitor Class ���������������������������������������������������������������������205 Deadlock �����������������������������������������������������������������������������������������������������������������������������������207 Types of Deadlock ���������������������������������������������������������������������������������������������������������������208 Demonstration 10 ����������������������������������������������������������������������������������������������������������������208 Investigating the Deadlocked State in Visual Studio �����������������������������������������������������������211 ix Table of ConTenTs Final Words �������������������������������������������������������������������������������������������������������������������������������214 Summary�����������������������������������������������������������������������������������������������������������������������������������216 Chapter 6: Asynchronous Programming ���������������������������������������������������������������217 Overview �����������������������������������������������������������������������������������������������������������������������������������217 Using a Synchronous Approach ������������������������������������������������������������������������������������������������219 Demonstration 1 ������������������������������������������������������������������������������������������������������������������219 Using Thread Class �������������������������������������������������������������������������������������������������������������������220 Demonstration 2 ������������������������������������������������������������������������������������������������������������������221 Q&A Session ������������������������������������������������������������������������������������������������������������������������223 Using the ThreadPool Class �������������������������������������������������������������������������������������������������������223 Demonstration 3 ������������������������������������������������������������������������������������������������������������������225 Q&A Session ������������������������������������������������������������������������������������������������������������������������229 Using Lambda Expressions with ThreadPool ����������������������������������������������������������������������������229 Demonstration 4 ������������������������������������������������������������������������������������������������������������������230 Using the IAsyncResult Pattern �������������������������������������������������������������������������������������������������233 Polling Using Asynchronous Delegates �������������������������������������������������������������������������������233 Demonstration 5 ������������������������������������������������������������������������������������������������������������������233 Q&A Session ������������������������������������������������������������������������������������������������������������������������237 Using the AsyncWaitHandle Property of IAsyncResult ���������������������������������������������������������238 Demonstration 6 ������������������������������������������������������������������������������������������������������������������239 Using Asynchronous Callback����������������������������������������������������������������������������������������������242 Demonstration 7 ������������������������������������������������������������������������������������������������������������������243 Q&A Session ������������������������������������������������������������������������������������������������������������������������246 Using an Event-based Asynchronous Pattern (EAP) ������������������������������������������������������������������249 Demonstration 8 ������������������������������������������������������������������������������������������������������������������250 Q&A Session ������������������������������������������������������������������������������������������������������������������������257 Understanding Tasks �����������������������������������������������������������������������������������������������������������������258 Demonstration 9 ������������������������������������������������������������������������������������������������������������������260 Using a Task-based Asynchronous Pattern (TAP) ����������������������������������������������������������������������262 Demonstration 10 ����������������������������������������������������������������������������������������������������������������262 Demonstration 11 ����������������������������������������������������������������������������������������������������������������264 x

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.