{"product_id":"c-10-0-allinone-for-dummies-9781119839071","title":"C 10.0 AllInOne for Dummies","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eIntroduction\u003c\/b\u003e 1\u003c\/p\u003e \u003cp\u003eAbout This Book 1\u003c\/p\u003e \u003cp\u003eFoolish Assumptions 2\u003c\/p\u003e \u003cp\u003eIcons Used in This Book 3\u003c\/p\u003e \u003cp\u003eBeyond the Book 3\u003c\/p\u003e \u003cp\u003eWhere to Go from Here 4\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 1: The Basics of C# Programming 5\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Creating Your First C# Console Application 7\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting a Handle on Computer Languages, C#, and NET 8\u003c\/p\u003e \u003cp\u003eWhat’s a program? 8\u003c\/p\u003e \u003cp\u003eWhat’s C#? 9\u003c\/p\u003e \u003cp\u003eWhat’s NET? 9\u003c\/p\u003e \u003cp\u003eWhat is Visual Studio 2022? 10\u003c\/p\u003e \u003cp\u003eCreating Your First Console Application 11\u003c\/p\u003e \u003cp\u003eCreating the source program 11\u003c\/p\u003e \u003cp\u003eTaking it out for a test drive 17\u003c\/p\u003e \u003cp\u003eMaking Your Console App Do Something 17\u003c\/p\u003e \u003cp\u003eReviewing Your Console Application 18\u003c\/p\u003e \u003cp\u003eThe program framework 19\u003c\/p\u003e \u003cp\u003eComments 19\u003c\/p\u003e \u003cp\u003eThe meat of the program 19\u003c\/p\u003e \u003cp\u003eReplacing All that Ceremonial Code: Top-Level Statements 20\u003c\/p\u003e \u003cp\u003eIntroducing the Toolbox Trick 21\u003c\/p\u003e \u003cp\u003eSaving code in the Toolbox 22\u003c\/p\u003e \u003cp\u003eReusing code from the Toolbox 22\u003c\/p\u003e \u003cp\u003eInteracting with C# Online 23\u003c\/p\u003e \u003cp\u003eWorking with Jupyter Notebook: The Short Version 23\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Living with Variability — Declaring Value-Type Variables 25\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDeclaring a Variable 26\u003c\/p\u003e \u003cp\u003eWhat’s an int? 27\u003c\/p\u003e \u003cp\u003eRules for declaring variables 28\u003c\/p\u003e \u003cp\u003eVariations on a theme: Different types of int 28\u003c\/p\u003e \u003cp\u003eRepresenting Fractions 30\u003c\/p\u003e \u003cp\u003eHandling Floating-Point Variables 31\u003c\/p\u003e \u003cp\u003eDeclaring a floating-point variable 31\u003c\/p\u003e \u003cp\u003eExamining some limitations of floating-point variables 32\u003c\/p\u003e \u003cp\u003eUsing the Decimal Type: Is It an Integer or a Float? 34\u003c\/p\u003e \u003cp\u003eDeclaring a decimal 35\u003c\/p\u003e \u003cp\u003eComparing decimals, integers, and floating-point types 35\u003c\/p\u003e \u003cp\u003eExamining the bool Type: Is It Logical? 36\u003c\/p\u003e \u003cp\u003eChecking Out Character Types 36\u003c\/p\u003e \u003cp\u003eThe char variable type 36\u003c\/p\u003e \u003cp\u003eSpecial chars 37\u003c\/p\u003e \u003cp\u003eThe string type 37\u003c\/p\u003e \u003cp\u003eWhat’s a Value Type? 39\u003c\/p\u003e \u003cp\u003eComparing string and char 40\u003c\/p\u003e \u003cp\u003eCalculating Leap Years: DateTime 41\u003c\/p\u003e \u003cp\u003eDeclaring Numeric Constants 43\u003c\/p\u003e \u003cp\u003eChanging Types: The Cast 44\u003c\/p\u003e \u003cp\u003eLetting the C# Compiler Infer Data Types 46\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Pulling Strings 49\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Union Is Indivisible, and So Are Strings 50\u003c\/p\u003e \u003cp\u003ePerforming Common Operations on a String 51\u003c\/p\u003e \u003cp\u003eComparing Strings 52\u003c\/p\u003e \u003cp\u003eEquality for all strings: The Compare() method 52\u003c\/p\u003e \u003cp\u003eWould you like your compares with or without case? 56\u003c\/p\u003e \u003cp\u003eWhat If I Want to Switch Case? 56\u003c\/p\u003e \u003cp\u003eDistinguishing between all-uppercase and all-lowercase strings 56\u003c\/p\u003e \u003cp\u003eConverting a string to upper- or lowercase 57\u003c\/p\u003e \u003cp\u003eLooping through a String 58\u003c\/p\u003e \u003cp\u003eSearching Strings 59\u003c\/p\u003e \u003cp\u003eCan I find it? 59\u003c\/p\u003e \u003cp\u003eIs my string empty? 60\u003c\/p\u003e \u003cp\u003eUsing advanced pattern matching 60\u003c\/p\u003e \u003cp\u003eGetting Input from Users in Console Applications 61\u003c\/p\u003e \u003cp\u003eTrimming excess white space 62\u003c\/p\u003e \u003cp\u003eParsing numeric input 62\u003c\/p\u003e \u003cp\u003eHandling a series of numbers 64\u003c\/p\u003e \u003cp\u003eJoining an array of strings into one string 66\u003c\/p\u003e \u003cp\u003eControlling Output Manually 67\u003c\/p\u003e \u003cp\u003eUsing the Trim() and Pad() methods 67\u003c\/p\u003e \u003cp\u003eUsing the Concatenate() method 69\u003c\/p\u003e \u003cp\u003eGo Ahead and Split() that concatenate program 71\u003c\/p\u003e \u003cp\u003eFormatting Your Strings Precisely 72\u003c\/p\u003e \u003cp\u003eUsing the String.Format() method 72\u003c\/p\u003e \u003cp\u003eUsing the interpolation method 77\u003c\/p\u003e \u003cp\u003eStringBuilder: Manipulating Strings More Efficiently 77\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Smooth Operators 81\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ePerforming Arithmetic 81\u003c\/p\u003e \u003cp\u003eSimple operators 82\u003c\/p\u003e \u003cp\u003eOperating orders 82\u003c\/p\u003e \u003cp\u003eThe assignment operator 84\u003c\/p\u003e \u003cp\u003eThe increment operator 84\u003c\/p\u003e \u003cp\u003ePerforming Logical Comparisons — Is That Logical? 85\u003c\/p\u003e \u003cp\u003eComparing floating-point numbers: Is your float bigger than mine? 86\u003c\/p\u003e \u003cp\u003eCompounding the confusion with compound logical operations 87\u003c\/p\u003e \u003cp\u003eMatching Expression Types at TrackDownAMate.com 89\u003c\/p\u003e \u003cp\u003eCalculating the type of an operation 89\u003c\/p\u003e \u003cp\u003eAssigning types 91\u003c\/p\u003e \u003cp\u003eChanging how an operator works: Operator overloading 92\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Getting into the Program Flow 95\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBranching Out with if and switch 96\u003c\/p\u003e \u003cp\u003eIntroducing the if statement 97\u003c\/p\u003e \u003cp\u003eExamining the else statement 100\u003c\/p\u003e \u003cp\u003eAvoiding even the else 101\u003c\/p\u003e \u003cp\u003eNesting if statements 102\u003c\/p\u003e \u003cp\u003eRunning the switchboard 104\u003c\/p\u003e \u003cp\u003eHere We Go Loop-the-Loop 110\u003c\/p\u003e \u003cp\u003eLooping for a while 111\u003c\/p\u003e \u003cp\u003eDoing the do while loop 114\u003c\/p\u003e \u003cp\u003eBreaking up is easy to do 115\u003c\/p\u003e \u003cp\u003eLooping until you get it right 116\u003c\/p\u003e \u003cp\u003eFocusing on scope rules 120\u003c\/p\u003e \u003cp\u003eLooping a Specified Number of Times with for 120\u003c\/p\u003e \u003cp\u003eA for loop example 121\u003c\/p\u003e \u003cp\u003eWhy do you need another loop? 122\u003c\/p\u003e \u003cp\u003eNesting loops 123\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Lining Up Your Ducks with Collections 125\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe C# Array 126\u003c\/p\u003e \u003cp\u003eThe argument for the array 126\u003c\/p\u003e \u003cp\u003eThe fixed-value array 127\u003c\/p\u003e \u003cp\u003eThe variable-length array 129\u003c\/p\u003e \u003cp\u003eInitializing an array 132\u003c\/p\u003e \u003cp\u003eProcessing Arrays by Using foreach 133\u003c\/p\u003e \u003cp\u003eWorking with foreach loops in a standard way 133\u003c\/p\u003e \u003cp\u003eRelying on GetEnumerator support 134\u003c\/p\u003e \u003cp\u003eSorting Arrays of Data 136\u003c\/p\u003e \u003cp\u003eUsing var for Arrays 139\u003c\/p\u003e \u003cp\u003eLoosening Up with C# Collections 140\u003c\/p\u003e \u003cp\u003eUnderstanding Collection Syntax 141\u003c\/p\u003e \u003cp\u003eFiguring out 142\u003c\/p\u003e \u003cp\u003eGoing generic 142\u003c\/p\u003e \u003cp\u003eUsing Lists 143\u003c\/p\u003e \u003cp\u003eInstantiating an empty list 143\u003c\/p\u003e \u003cp\u003eCreating a list of type int 144\u003c\/p\u003e \u003cp\u003eConverting between lists and arrays 144\u003c\/p\u003e \u003cp\u003eSearching lists 144\u003c\/p\u003e \u003cp\u003ePerforming other list tasks 145\u003c\/p\u003e \u003cp\u003eUsing Dictionaries 145\u003c\/p\u003e \u003cp\u003eCreating a dictionary 145\u003c\/p\u003e \u003cp\u003eSearching a dictionary 146\u003c\/p\u003e \u003cp\u003eIterating a dictionary 146\u003c\/p\u003e \u003cp\u003eArray and Collection Initializers 147\u003c\/p\u003e \u003cp\u003eInitializing arrays 148\u003c\/p\u003e \u003cp\u003eInitializing collections 148\u003c\/p\u003e \u003cp\u003eUsing Sets 149\u003c\/p\u003e \u003cp\u003ePerforming special set tasks 149\u003c\/p\u003e \u003cp\u003eCreating a set 150\u003c\/p\u003e \u003cp\u003eAdding items to a set 150\u003c\/p\u003e \u003cp\u003ePerforming a union 151\u003c\/p\u003e \u003cp\u003ePerforming an intersection 152\u003c\/p\u003e \u003cp\u003ePerforming a difference 153\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Stepping through Collections 155\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIterating through a Directory of Files 156\u003c\/p\u003e \u003cp\u003eUsing the LoopThroughFiles program 156\u003c\/p\u003e \u003cp\u003eGetting started 157\u003c\/p\u003e \u003cp\u003eObtaining the initial input 157\u003c\/p\u003e \u003cp\u003eCreating a list of files 159\u003c\/p\u003e \u003cp\u003eFormatting the output lines 160\u003c\/p\u003e \u003cp\u003eDisplaying the hexadecimal output 161\u003c\/p\u003e \u003cp\u003eRunning from inside Visual Studio 163\u003c\/p\u003e \u003cp\u003eIterating foreach Collections: Iterators 164\u003c\/p\u003e \u003cp\u003eAccessing a collection: The general problem 164\u003c\/p\u003e \u003cp\u003eLetting C# access data foreach container 167\u003c\/p\u003e \u003cp\u003eAccessing Collections the Array Way: Indexers 169\u003c\/p\u003e \u003cp\u003eIndexer format 169\u003c\/p\u003e \u003cp\u003eAn indexer program example 170\u003c\/p\u003e \u003cp\u003eLooping Around the Iterator Block 173\u003c\/p\u003e \u003cp\u003eCreating the required iterator block framework 174\u003c\/p\u003e \u003cp\u003eIterating days of the month: A first example 176\u003c\/p\u003e \u003cp\u003eWhat a collection is, really 177\u003c\/p\u003e \u003cp\u003eIterator syntax gives up so easily 178\u003c\/p\u003e \u003cp\u003eIterator blocks of all shapes and sizes 180\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Buying Generic 187\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWriting a New Prescription: Generics 188\u003c\/p\u003e \u003cp\u003eGenerics are type-safe 188\u003c\/p\u003e \u003cp\u003eGenerics are efficient 189\u003c\/p\u003e \u003cp\u003eClassy Generics: Writing Your Own 190\u003c\/p\u003e \u003cp\u003eShipping packages at OOPs 190\u003c\/p\u003e \u003cp\u003eQueuing at OOPs: PriorityQueue 191\u003c\/p\u003e \u003cp\u003eUnwrapping the package 194\u003c\/p\u003e \u003cp\u003eTouring Main() 196\u003c\/p\u003e \u003cp\u003eWriting generic code the easy way 197\u003c\/p\u003e \u003cp\u003eSaving PriorityQueue for last 198\u003c\/p\u003e \u003cp\u003eUsing a (nongeneric) Simple Factory class 201\u003c\/p\u003e \u003cp\u003eUnderstanding Variance in Generics 205\u003c\/p\u003e \u003cp\u003eContravariance 206\u003c\/p\u003e \u003cp\u003eCovariance 208\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9: Some Exceptional Exceptions 209\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing an Exceptional Error-Reporting Mechanism 210\u003c\/p\u003e \u003cp\u003eAbout try blocks 211\u003c\/p\u003e \u003cp\u003eAbout catch blocks 211\u003c\/p\u003e \u003cp\u003eAbout finally blocks 212\u003c\/p\u003e \u003cp\u003eWhat happens when an exception is thrown 213\u003c\/p\u003e \u003cp\u003eThrowing Exceptions Yourself 215\u003c\/p\u003e \u003cp\u003eCan I Get an Exceptional Example? 216\u003c\/p\u003e \u003cp\u003eWorking with Custom Exceptions 220\u003c\/p\u003e \u003cp\u003ePlanning Your Exception-Handling Strategy 221\u003c\/p\u003e \u003cp\u003eSome questions to guide your planning 221\u003c\/p\u003e \u003cp\u003eGuidelines for code that handles errors well 222\u003c\/p\u003e \u003cp\u003eHow to find out which methods throw which exceptions 223\u003c\/p\u003e \u003cp\u003eGrabbing Your Last Chance to Catch an Exception 225\u003c\/p\u003e \u003cp\u003eThrowing Expressions 226\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10: Creating Lists of Items with Enumerations 229\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSeeing Enumerations in the Real World 230\u003c\/p\u003e \u003cp\u003eWorking with Enumerations 231\u003c\/p\u003e \u003cp\u003eUsing the enum keyword 231\u003c\/p\u003e \u003cp\u003eCreating enumerations with initializers 233\u003c\/p\u003e \u003cp\u003eSpecifying an enumeration data type 234\u003c\/p\u003e \u003cp\u003eCreating Enumerated Flags 235\u003c\/p\u003e \u003cp\u003eDefining Enumerated Switches 237\u003c\/p\u003e \u003cp\u003eWorking with Enumeration Methods 238\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 2: Object-Oriented C# Programming 241\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Showing Some Class 243\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA Quick Overview of Object-Oriented Programming 244\u003c\/p\u003e \u003cp\u003eConsidering OOP basics 244\u003c\/p\u003e \u003cp\u003eExtending classes to meet other needs 244\u003c\/p\u003e \u003cp\u003eKeeping objects safe 245\u003c\/p\u003e \u003cp\u003eWorking with objects 246\u003c\/p\u003e \u003cp\u003eDefining a Class and an Object 246\u003c\/p\u003e \u003cp\u003eDefining a class 247\u003c\/p\u003e \u003cp\u003eWhat’s the object? 249\u003c\/p\u003e \u003cp\u003eAccessing the Members of an Object 250\u003c\/p\u003e \u003cp\u003eWorking with Object-Based Code 250\u003c\/p\u003e \u003cp\u003eUsing the traditional approach 250\u003c\/p\u003e \u003cp\u003eUsing the C# 9.0 approach 252\u003c\/p\u003e \u003cp\u003eDiscriminating between Objects 253\u003c\/p\u003e \u003cp\u003eCan You Give Me References? 254\u003c\/p\u003e \u003cp\u003eClasses That Contain Classes Are the Happiest Classes in the World 256\u003c\/p\u003e \u003cp\u003eGenerating Static in Class Members 257\u003c\/p\u003e \u003cp\u003eDefining const and readonly Data Members 259\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: We Have Our Methods 261\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDefining and Using a Method 262\u003c\/p\u003e \u003cp\u003eMethod Examples for Your Files 263\u003c\/p\u003e \u003cp\u003eUnderstanding the problem 264\u003c\/p\u003e \u003cp\u003eWorking with standard coding methods 265\u003c\/p\u003e \u003cp\u003eApplying a refactoring approach 268\u003c\/p\u003e \u003cp\u003eWorking with local functions 271\u003c\/p\u003e \u003cp\u003eHaving Arguments with Methods 273\u003c\/p\u003e \u003cp\u003ePassing an argument to a method 273\u003c\/p\u003e \u003cp\u003ePassing multiple arguments to methods 274\u003c\/p\u003e \u003cp\u003eMatching argument definitions with usage 276\u003c\/p\u003e \u003cp\u003eOverloading a method doesn’t mean giving it too much to do 276\u003c\/p\u003e \u003cp\u003eImplementing default arguments 278\u003c\/p\u003e \u003cp\u003eUsing the Call-by-Reference Feature 280\u003c\/p\u003e \u003cp\u003eDefining a Method with No Return Value 281\u003c\/p\u003e \u003cp\u003eReturning Multiple Values Using Tuples 282\u003c\/p\u003e \u003cp\u003eUsing a tuple 283\u003c\/p\u003e \u003cp\u003eRelying on the Create() method 284\u003c\/p\u003e \u003cp\u003eCreating tuples with more than two items 284\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Let Me Say This about this 287\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ePassing an Object to a Method 288\u003c\/p\u003e \u003cp\u003eComparing Static and Instance Methods 290\u003c\/p\u003e \u003cp\u003eEmploying static properties and methods effectively 291\u003c\/p\u003e \u003cp\u003eEmploying instance properties and methods effectively 293\u003c\/p\u003e \u003cp\u003eExpanding a method’s full name 295\u003c\/p\u003e \u003cp\u003eAccessing the Current Object 296\u003c\/p\u003e \u003cp\u003eWhat is the this keyword? 298\u003c\/p\u003e \u003cp\u003eWhen is the this keyword explicit? 299\u003c\/p\u003e \u003cp\u003eUsing Local Functions 300\u003c\/p\u003e \u003cp\u003eCreating a basic local function 300\u003c\/p\u003e \u003cp\u003eUsing attributes with local functions 301\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Holding a Class Responsible 303\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRestricting Access to Class Members 303\u003c\/p\u003e \u003cp\u003eA public example of public BankAccount 304\u003c\/p\u003e \u003cp\u003eJumping ahead — other levels of security 306\u003c\/p\u003e \u003cp\u003eWhy You Should Worry about Access Control 307\u003c\/p\u003e \u003cp\u003eAccessor methods 308\u003c\/p\u003e \u003cp\u003eWorking with init-only setters 309\u003c\/p\u003e \u003cp\u003eAccess control to the rescue — an example 311\u003c\/p\u003e \u003cp\u003eDefining Class Properties 313\u003c\/p\u003e \u003cp\u003eStatic properties 315\u003c\/p\u003e \u003cp\u003eProperties with side effects 315\u003c\/p\u003e \u003cp\u003eAccessors with access levels 316\u003c\/p\u003e \u003cp\u003eUsing Target Typing for Your Convenience 316\u003c\/p\u003e \u003cp\u003eDealing with Covariant Return Types 319\u003c\/p\u003e \u003cp\u003eGetting Your Objects Off to a Good Start — Constructors 320\u003c\/p\u003e \u003cp\u003eThe C#-Provided Constructor 321\u003c\/p\u003e \u003cp\u003eReplacing the Default Constructor 322\u003c\/p\u003e \u003cp\u003eConstructing something 324\u003c\/p\u003e \u003cp\u003eInitializing an object directly with an initializer 326\u003c\/p\u003e \u003cp\u003eSeeing that construction stuff with initializers 326\u003c\/p\u003e \u003cp\u003eInitializing an object without a constructor 327\u003c\/p\u003e \u003cp\u003eUsing Expression-Bodied Members 329\u003c\/p\u003e \u003cp\u003eCreating expression-bodied methods 329\u003c\/p\u003e \u003cp\u003eDefining expression-bodied properties 329\u003c\/p\u003e \u003cp\u003eDefining expression-bodied constructors and destructors 330\u003c\/p\u003e \u003cp\u003eDefining expression-bodied property accessors 330\u003c\/p\u003e \u003cp\u003eDefining expression-bodied event accessors 331\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Inheritance: Is That All I Get? 333\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhy You Need Inheritance 334\u003c\/p\u003e \u003cp\u003eInheriting from a BankAccount Class (a More Complex Example) 335\u003c\/p\u003e \u003cp\u003eWorking with the basic update 336\u003c\/p\u003e \u003cp\u003eTracking the BankAccount and SavingsAccount classes features 339\u003c\/p\u003e \u003cp\u003eIS_A versus HAS_A — I’m So Confused_A 342\u003c\/p\u003e \u003cp\u003eThe IS_A relationship 342\u003c\/p\u003e \u003cp\u003eGaining access to BankAccount by using containment 343\u003c\/p\u003e \u003cp\u003eThe HAS_A relationship 345\u003c\/p\u003e \u003cp\u003eWhen to IS_A and When to HAS_A 346\u003c\/p\u003e \u003cp\u003eOther Features That Support Inheritance 346\u003c\/p\u003e \u003cp\u003eSubstitutable classes 346\u003c\/p\u003e \u003cp\u003eInvalid casts at runtime 347\u003c\/p\u003e \u003cp\u003eAvoiding invalid conversions with the is operator 348\u003c\/p\u003e \u003cp\u003eAvoiding invalid conversions with the as operator 349\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Poly-what-ism? 353\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eOverloading an Inherited Method 354\u003c\/p\u003e \u003cp\u003eIt’s a simple case of method overloading 354\u003c\/p\u003e \u003cp\u003eDifferent class, different method 355\u003c\/p\u003e \u003cp\u003ePeek-a-boo — hiding a base class method 355\u003c\/p\u003e \u003cp\u003ePolymorphism 361\u003c\/p\u003e \u003cp\u003eUsing the declared type every time (Is that so wrong?) 362\u003c\/p\u003e \u003cp\u003eUsing is to access a hidden method polymorphically 364\u003c\/p\u003e \u003cp\u003eDeclaring a method virtual and overriding it 365\u003c\/p\u003e \u003cp\u003eGetting the most benefit from polymorphism 368\u003c\/p\u003e \u003cp\u003eC# During Its Abstract Period 368\u003c\/p\u003e \u003cp\u003eClass factoring 369\u003c\/p\u003e \u003cp\u003eThe abstract class: Left with nothing but a concept 373\u003c\/p\u003e \u003cp\u003eHow do you use an abstract class? 374\u003c\/p\u003e \u003cp\u003eCreating an abstract object — not! 377\u003c\/p\u003e \u003cp\u003eSealing a Class 377\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Interfacing with the Interface 379\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing CAN_BE_USED_AS 379\u003c\/p\u003e \u003cp\u003eKnowing What an Interface Is 381\u003c\/p\u003e \u003cp\u003eHow to implement an interface 382\u003c\/p\u003e \u003cp\u003eUsing the newer C# 8.0 additions 383\u003c\/p\u003e \u003cp\u003eHow to name your interface 386\u003c\/p\u003e \u003cp\u003eWhy C# includes interfaces 386\u003c\/p\u003e \u003cp\u003eMixing inheritance and interface implementation 387\u003c\/p\u003e \u003cp\u003eAnd he-e-e-re’s the payoff 387\u003c\/p\u003e \u003cp\u003eUsing an Interface 388\u003c\/p\u003e \u003cp\u003eAs a method return type 389\u003c\/p\u003e \u003cp\u003eAs the base type of an array or collection 389\u003c\/p\u003e \u003cp\u003eAs a more general type of object reference 390\u003c\/p\u003e \u003cp\u003eUsing the C# Predefined Interface Types 390\u003c\/p\u003e \u003cp\u003eLooking at a Program That CAN_BE_USED_AS an Example 391\u003c\/p\u003e \u003cp\u003eCreating your own interface at home in your spare time 391\u003c\/p\u003e \u003cp\u003eImplementing the incomparable I Comparable interface 392\u003c\/p\u003e \u003cp\u003eCreating a list of students 394\u003c\/p\u003e \u003cp\u003eTesting everything using Main() 395\u003c\/p\u003e \u003cp\u003eUnifying Class Hierarchies 396\u003c\/p\u003e \u003cp\u003eHiding Behind an Interface 399\u003c\/p\u003e \u003cp\u003eInheriting an Interface 401\u003c\/p\u003e \u003cp\u003eUsing Interfaces to Manage Change in Object-Oriented Programs 402\u003c\/p\u003e \u003cp\u003eMaking flexible dependencies through interfaces 403\u003c\/p\u003e \u003cp\u003eAbstract or concrete: When to use an abstract class and when to use an interface 404\u003c\/p\u003e \u003cp\u003eDoing HAS_A with interfaces 405\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Delegating Those Important Events 407\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eE.T., Phone Home — The Callback Problem 408\u003c\/p\u003e \u003cp\u003eDefining a Delegate 408\u003c\/p\u003e \u003cp\u003ePass Me the Code, Please — Examples 411\u003c\/p\u003e \u003cp\u003eDelegating the task 411\u003c\/p\u003e \u003cp\u003eFirst, a simple example 412\u003c\/p\u003e \u003cp\u003eConsidering the Action, Func, and Predicate delegate types 413\u003c\/p\u003e \u003cp\u003eA More Real-World Example 415\u003c\/p\u003e \u003cp\u003ePutting the app together 416\u003c\/p\u003e \u003cp\u003eSetting the properties and adding event handlers 418\u003c\/p\u003e \u003cp\u003eLooking at the workhorse code 419\u003c\/p\u003e \u003cp\u003eShh! Keep It Quiet — Anonymous Methods 421\u003c\/p\u003e \u003cp\u003eDefining the basic anonymous method 421\u003c\/p\u003e \u003cp\u003eUsing static anonymous methods 422\u003c\/p\u003e \u003cp\u003eWorking with lambda discard parameters 424\u003c\/p\u003e \u003cp\u003eStuff Happens — C# Events 424\u003c\/p\u003e \u003cp\u003eThe Observer design pattern 425\u003c\/p\u003e \u003cp\u003eWhat’s an event? Publish\/Subscribe 425\u003c\/p\u003e \u003cp\u003eHow a publisher advertises its events 426\u003c\/p\u003e \u003cp\u003eHow subscribers subscribe to an event 427\u003c\/p\u003e \u003cp\u003eHow to publish an event 427\u003c\/p\u003e \u003cp\u003eHow to pass extra information to an event handler 428\u003c\/p\u003e \u003cp\u003eA recommended way to raise your events 429\u003c\/p\u003e \u003cp\u003eHow observers “handle” an event 430\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9: Can I Use Your Namespace in the Library? 433\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDividing a Single Program into Multiple Source Files 434\u003c\/p\u003e \u003cp\u003eWorking with Global using Statements 435\u003c\/p\u003e \u003cp\u003eDividing a Single Program into Multiple Assemblies 437\u003c\/p\u003e \u003cp\u003eExecutable or library? 437\u003c\/p\u003e \u003cp\u003eAssemblies 437\u003c\/p\u003e \u003cp\u003eExecutables 438\u003c\/p\u003e \u003cp\u003eClass libraries 439\u003c\/p\u003e \u003cp\u003ePutting Your Classes into Class Libraries 439\u003c\/p\u003e \u003cp\u003eCreating the projects for a class library 439\u003c\/p\u003e \u003cp\u003eCreating a stand-alone class library 440\u003c\/p\u003e \u003cp\u003eAdding a second project to an existing solution 442\u003c\/p\u003e \u003cp\u003eCreating the code for the library 445\u003c\/p\u003e \u003cp\u003eUsing a test application to test a library 446\u003c\/p\u003e \u003cp\u003eGoing Beyond Public and Private: More Access Keywords 448\u003c\/p\u003e \u003cp\u003eInternal: For CIA eyes only 448\u003c\/p\u003e \u003cp\u003eProtected: Sharing with subclasses 451\u003c\/p\u003e \u003cp\u003ePutting Classes into Namespaces 453\u003c\/p\u003e \u003cp\u003eDeclaring a namespace 454\u003c\/p\u003e \u003cp\u003eUsing file-scoped namespaces 456\u003c\/p\u003e \u003cp\u003eRelating namespaces to the access keyword story 456\u003c\/p\u003e \u003cp\u003eUsing fully qualified names 458\u003c\/p\u003e \u003cp\u003eWorking with partial classes 459\u003c\/p\u003e \u003cp\u003eWorking with Partial Methods 463\u003c\/p\u003e \u003cp\u003eDefining what partial methods do 463\u003c\/p\u003e \u003cp\u003eCreating a partial method 464\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10: Improving Productivity with Named and Optional Parameters 465\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eExploring Optional Parameters 466\u003c\/p\u003e \u003cp\u003eWorking with optional value parameters 466\u003c\/p\u003e \u003cp\u003eAvoiding optional reference types 468\u003c\/p\u003e \u003cp\u003eLooking at Named Parameters 470\u003c\/p\u003e \u003cp\u003eUsing Alternative Methods to Return Values 470\u003c\/p\u003e \u003cp\u003eOutput (out) parameters 471\u003c\/p\u003e \u003cp\u003eWorking with out variables 471\u003c\/p\u003e \u003cp\u003eReturning values by reference 472\u003c\/p\u003e \u003cp\u003eDealing with null Parameters 473\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11: Interacting with Structures 475\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eComparing Structures to Classes 476\u003c\/p\u003e \u003cp\u003eConsidering struct limits 476\u003c\/p\u003e \u003cp\u003eUnderstanding the value type difference 477\u003c\/p\u003e \u003cp\u003eDetermining when to use struct versus class 477\u003c\/p\u003e \u003cp\u003eCreating Structures 478\u003c\/p\u003e \u003cp\u003eDefining a basic struct 478\u003c\/p\u003e \u003cp\u003eIncluding common struct elements 479\u003c\/p\u003e \u003cp\u003eUsing supplemental struct elements 482\u003c\/p\u003e \u003cp\u003eWorking with Read-only Structures 485\u003c\/p\u003e \u003cp\u003eWorking with Reference Structures 487\u003c\/p\u003e \u003cp\u003eUsing Structures as Records 489\u003c\/p\u003e \u003cp\u003eManaging a single record 489\u003c\/p\u003e \u003cp\u003eAdding structures to arrays 489\u003c\/p\u003e \u003cp\u003eOverriding methods 490\u003c\/p\u003e \u003cp\u003eUsing the New Record Type 491\u003c\/p\u003e \u003cp\u003eComparing records to structures and classes 491\u003c\/p\u003e \u003cp\u003eWorking with a record 492\u003c\/p\u003e \u003cp\u003eUsing the positional syntax for property definition 493\u003c\/p\u003e \u003cp\u003eUnderstanding value equality 494\u003c\/p\u003e \u003cp\u003eCreating safe changes: Nondestructive mutation 494\u003c\/p\u003e \u003cp\u003eUsing the field keyword 495\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 3: Designing For C# 497\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Writing Secure Code 499\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDesigning Secure Software 500\u003c\/p\u003e \u003cp\u003eDetermining what to protect 500\u003c\/p\u003e \u003cp\u003eDocumenting the components of the program 501\u003c\/p\u003e \u003cp\u003eDecomposing components into functions 502\u003c\/p\u003e \u003cp\u003eIdentifying potential threats in functions 502\u003c\/p\u003e \u003cp\u003eBuilding Secure Windows Applications 503\u003c\/p\u003e \u003cp\u003eAuthentication using Windows logon 503\u003c\/p\u003e \u003cp\u003eEncrypting information 507\u003c\/p\u003e \u003cp\u003eDeployment security 507\u003c\/p\u003e \u003cp\u003eUsing System.Security 508\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Accessing Data 509\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting to Know System.Data 510\u003c\/p\u003e \u003cp\u003eHow the Data Classes Fit into the Framework 512\u003c\/p\u003e \u003cp\u003eGetting to Your Data 512\u003c\/p\u003e \u003cp\u003eUsing the System.Data Namespace 513\u003c\/p\u003e \u003cp\u003eSetting up a sample database schema 513\u003c\/p\u003e \u003cp\u003eCreating the data access project 514\u003c\/p\u003e \u003cp\u003eConnecting to a data source 514\u003c\/p\u003e \u003cp\u003eWorking with the visual tools 519\u003c\/p\u003e \u003cp\u003eWriting data code 521\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Fishing the File Stream 525\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGoing Where the Fish Are: The File Stream 525\u003c\/p\u003e \u003cp\u003eStreams 526\u003c\/p\u003e \u003cp\u003eReaders and writers 527\u003c\/p\u003e \u003cp\u003eStreamWriting for Old Walter 528\u003c\/p\u003e \u003cp\u003eUsing the stream: An example 529\u003c\/p\u003e \u003cp\u003eUsing some better fishing gear: The using statement 534\u003c\/p\u003e \u003cp\u003ePulling Them Out of the Stream: Using StreamReader 537\u003c\/p\u003e \u003cp\u003eMore Readers and Writers 539\u003c\/p\u003e \u003cp\u003eExploring More Streams than Lewis and Clark 541\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Accessing the Internet 543\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting to Know System.Net 544\u003c\/p\u003e \u003cp\u003eHow Net Classes Fit into the Framework 545\u003c\/p\u003e \u003cp\u003eUnderstanding the System.Net subordinate namespaces 545\u003c\/p\u003e \u003cp\u003eWorking with the System.Net classes 548\u003c\/p\u003e \u003cp\u003eUsing the System.Net Namespace 549\u003c\/p\u003e \u003cp\u003eChecking the network status 549\u003c\/p\u003e \u003cp\u003eDownloading a file from the Internet 551\u003c\/p\u003e \u003cp\u003eEmailing a status report 553\u003c\/p\u003e \u003cp\u003eLogging network activity 556\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Creating Images 559\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting to Know System.Drawing 560\u003c\/p\u003e \u003cp\u003eGraphics 561\u003c\/p\u003e \u003cp\u003ePens 562\u003c\/p\u003e \u003cp\u003eBrushes 563\u003c\/p\u003e \u003cp\u003eText 563\u003c\/p\u003e \u003cp\u003eHow the Drawing Classes Fit into the Framework 564\u003c\/p\u003e \u003cp\u003eUsing the System.Drawing Namespace 565\u003c\/p\u003e \u003cp\u003eGetting started 565\u003c\/p\u003e \u003cp\u003eSetting up the project 567\u003c\/p\u003e \u003cp\u003eHandling the score 567\u003c\/p\u003e \u003cp\u003eCreating an event connection 569\u003c\/p\u003e \u003cp\u003eDrawing the board 570\u003c\/p\u003e \u003cp\u003ePrinting the score 572\u003c\/p\u003e \u003cp\u003eStarting a new game 574\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Programming Dynamically! 575\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eShifting C# Toward Dynamic Typing 576\u003c\/p\u003e \u003cp\u003eEmploying Dynamic Programming Techniques 578\u003c\/p\u003e \u003cp\u003ePutting Dynamic to Use 580\u003c\/p\u003e \u003cp\u003eClassic examples 580\u003c\/p\u003e \u003cp\u003eMaking static operations dynamic 581\u003c\/p\u003e \u003cp\u003eUnderstanding what’s happening under the covers 581\u003c\/p\u003e \u003cp\u003eRunning with the Dynamic Language Runtime 582\u003c\/p\u003e \u003cp\u003eUsing Static Anonymous Functions 585\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 4: A Tour of Visual Studio 587\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Getting Started with Visual Studio 589\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eVersioning the Versions 590\u003c\/p\u003e \u003cp\u003eAn overview of Visual Studio 2022 updates 590\u003c\/p\u003e \u003cp\u003eCommunity edition 592\u003c\/p\u003e \u003cp\u003eProfessional edition 594\u003c\/p\u003e \u003cp\u003eEnterprise edition 594\u003c\/p\u003e \u003cp\u003eMSDN 595\u003c\/p\u003e \u003cp\u003eInstalling Visual Studio 596\u003c\/p\u003e \u003cp\u003eBreaking Down the Projects 597\u003c\/p\u003e \u003cp\u003eExploring the Create a New Project dialog box 600\u003c\/p\u003e \u003cp\u003eUnderstanding solutions and projects 601\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Using the Interface 603\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDesigning in the Designer 604\u003c\/p\u003e \u003cp\u003eUniversal Windows Platform (UWP) application 604\u003c\/p\u003e \u003cp\u003eWindows Presentation Foundation (WPF) 607\u003c\/p\u003e \u003cp\u003eWindows Forms 609\u003c\/p\u003e \u003cp\u003eData View 609\u003c\/p\u003e \u003cp\u003ePaneling the Studio 610\u003c\/p\u003e \u003cp\u003eSolution Explorer 610\u003c\/p\u003e \u003cp\u003eProperties 613\u003c\/p\u003e \u003cp\u003eThe Toolbox 614\u003c\/p\u003e \u003cp\u003eServer Explorer 615\u003c\/p\u003e \u003cp\u003eClass View 617\u003c\/p\u003e \u003cp\u003eCoding in the Code Editor 618\u003c\/p\u003e \u003cp\u003eExercising the Code Editor 618\u003c\/p\u003e \u003cp\u003eExploring the auxiliary windows 619\u003c\/p\u003e \u003cp\u003eUsing the Tools of the Trade 621\u003c\/p\u003e \u003cp\u003eThe Tools menu 622\u003c\/p\u003e \u003cp\u003eBuilding 623\u003c\/p\u003e \u003cp\u003eUsing the Debugger as an Aid to Learning 623\u003c\/p\u003e \u003cp\u003eStepping through code 623\u003c\/p\u003e \u003cp\u003eGoing to a particular code location 624\u003c\/p\u003e \u003cp\u003eWatching application data 625\u003c\/p\u003e \u003cp\u003eViewing application internals 626\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Customizing Visual Studio 627\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSetting Options 628\u003c\/p\u003e \u003cp\u003eEnvironment 629\u003c\/p\u003e \u003cp\u003eLanguage 630\u003c\/p\u003e \u003cp\u003eNeat stuff 631\u003c\/p\u003e \u003cp\u003eCreating Your Own Templates 632\u003c\/p\u003e \u003cp\u003eDeveloping a project template 632\u003c\/p\u003e \u003cp\u003eDeveloping an item template 635\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 5: Windows Development with Wpf 639\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Introducing WPF 641\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding What WPF Can Do 642\u003c\/p\u003e \u003cp\u003eIntroducing XAML 643\u003c\/p\u003e \u003cp\u003eDiving In! Creating Your First WPF Application 644\u003c\/p\u003e \u003cp\u003eDeclaring an application-scoped resource 647\u003c\/p\u003e \u003cp\u003eMaking the application do something 648\u003c\/p\u003e \u003cp\u003eWhatever XAML Can Do, C# Can Do Better! 650\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Understanding the Basics of WPF 653\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing WPF to Lay Out Your Application 654\u003c\/p\u003e \u003cp\u003eArranging Elements with Layout Panels 655\u003c\/p\u003e \u003cp\u003eThe Stack panel 656\u003c\/p\u003e \u003cp\u003eThe Wrap panel 660\u003c\/p\u003e \u003cp\u003eThe Dock panel 661\u003c\/p\u003e \u003cp\u003eCanvas 662\u003c\/p\u003e \u003cp\u003eThe Grid 662\u003c\/p\u003e \u003cp\u003ePutting it all together with a simple data entry form 669\u003c\/p\u003e \u003cp\u003eExploring Common XAML Controls 672\u003c\/p\u003e \u003cp\u003eDisplay-only controls 672\u003c\/p\u003e \u003cp\u003eBasic input controls 674\u003c\/p\u003e \u003cp\u003eList-based controls 677\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Data Binding in WPF 681\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting to Know Dependency Properties 682\u003c\/p\u003e \u003cp\u003eExploring the Binding Modes 683\u003c\/p\u003e \u003cp\u003eInvestigating the Binding Object 683\u003c\/p\u003e \u003cp\u003eDefining a binding with XAML 684\u003c\/p\u003e \u003cp\u003eDefining a binding with C# 686\u003c\/p\u003e \u003cp\u003eEditing, Validating, Converting, and Visualizing Your Data 687\u003c\/p\u003e \u003cp\u003eValidating data 693\u003c\/p\u003e \u003cp\u003eConverting your data 697\u003c\/p\u003e \u003cp\u003eFinding Out More about WPF Data Binding 705\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Practical WPF 707\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCommanding Attention 708\u003c\/p\u003e \u003cp\u003eTraditional event handling 708\u003c\/p\u003e \u003cp\u003eICommand 709\u003c\/p\u003e \u003cp\u003eRouted commands 710\u003c\/p\u003e \u003cp\u003eUsing Built-In Commands 711\u003c\/p\u003e \u003cp\u003eUsing Custom Commands 713\u003c\/p\u003e \u003cp\u003eDefining the interface 713\u003c\/p\u003e \u003cp\u003eCreating the window binding 714\u003c\/p\u003e \u003cp\u003eEnsuring that the command can execute 714\u003c\/p\u003e \u003cp\u003ePerforming the task 715\u003c\/p\u003e \u003cp\u003eUsing Routed Commands 717\u003c\/p\u003e \u003cp\u003eDefining the Command class 717\u003c\/p\u003e \u003cp\u003eMaking the namespace accessible 718\u003c\/p\u003e \u003cp\u003eAdding the command bindings 718\u003c\/p\u003e \u003cp\u003eDeveloping a user interface 718\u003c\/p\u003e \u003cp\u003eDeveloping the custom command code-behind 719\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Programming for Windows 10 and Above 721\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat is the Universal Windows Platform (UWP)? 722\u003c\/p\u003e \u003cp\u003eDevices Supported by the UWP 725\u003c\/p\u003e \u003cp\u003eCreating Your Own UWP App 726\u003c\/p\u003e \u003cp\u003eConfiguring Developer Mode 726\u003c\/p\u003e \u003cp\u003eDefining the project 732\u003c\/p\u003e \u003cp\u003eCreating an interface 734\u003c\/p\u003e \u003cp\u003eAdding some background code 738\u003c\/p\u003e \u003cp\u003eChoosing a test device 739\u003c\/p\u003e \u003cp\u003eWorking with NET Core Applications 740\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 6: Web Development with Asp.Net 743\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Creating a Basic ASP.NET Core App 745\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding the ASP.NET Core Templates 746\u003c\/p\u003e \u003cp\u003eStarting with nothing using ASP.NET Core Empty 746\u003c\/p\u003e \u003cp\u003eCreating a basic app using the ASP.NET Core Web App 748\u003c\/p\u003e \u003cp\u003eFumbling around with HTTPS-enabled sites 749\u003c\/p\u003e \u003cp\u003eBuilding in business logic using ASP.NET Core App (Model-View-Controller) 751\u003c\/p\u003e \u003cp\u003eDeveloping a programming interface using ASP.NET\u003c\/p\u003e \u003cp\u003eCore Web API 752\u003c\/p\u003e \u003cp\u003eAn overview of those other weird templates 753\u003c\/p\u003e \u003cp\u003eDeveloping a Basic Web App 754\u003c\/p\u003e \u003cp\u003eCreating the project 754\u003c\/p\u003e \u003cp\u003eConsidering the development process 756\u003c\/p\u003e \u003cp\u003eAdding web content 757\u003c\/p\u003e \u003cp\u003eMaking some basic changes to the first page 759\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Employing the Razor Markup Language 761\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAvoiding Nicks from Razor 762\u003c\/p\u003e \u003cp\u003eComparing Razor to its predecessors 762\u003c\/p\u003e \u003cp\u003eConsidering the actual file layout 763\u003c\/p\u003e \u003cp\u003eUnderstanding the syntax rules for C# 766\u003c\/p\u003e \u003cp\u003eWorking with some Razor basics 767\u003c\/p\u003e \u003cp\u003eCreating Variables 770\u003c\/p\u003e \u003cp\u003eKeeping Things Logical 771\u003c\/p\u003e \u003cp\u003eStarting simply by using if 771\u003c\/p\u003e \u003cp\u003eSleeping at the switch 771\u003c\/p\u003e \u003cp\u003eImplementing Loops 772\u003c\/p\u003e \u003cp\u003eCreating an array 772\u003c\/p\u003e \u003cp\u003ePerforming tasks a specific number of times using for 773\u003c\/p\u003e \u003cp\u003eProcessing an unknown number of times using for each and while 773\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Generating and Consuming Data 775\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Why These Projects Are Important 776\u003c\/p\u003e \u003cp\u003eSerialized Data Isn’t for Breakfast 777\u003c\/p\u003e \u003cp\u003eDeveloping a Data Generator and API 778\u003c\/p\u003e \u003cp\u003eCreating the WeatherForecast project 778\u003c\/p\u003e \u003cp\u003eMaking the data believable 781\u003c\/p\u003e \u003cp\u003eLooking at the API configuration 783\u003c\/p\u003e \u003cp\u003eChecking the API for functionality 784\u003c\/p\u003e \u003cp\u003eCreating a Consumer Website 786\u003c\/p\u003e \u003cp\u003eCreating the RetrieveWeatherForecast project 786\u003c\/p\u003e \u003cp\u003eDeveloping a user interface 787\u003c\/p\u003e \u003cp\u003eGetting and deserializing the data 789\u003c\/p\u003e \u003cp\u003eSeeing the application in action 793\u003c\/p\u003e \u003cp\u003eIndex 795 \u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48866419736919,"sku":"9781119839071","price":31.19,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781119839071.jpg?v=1722278557","url":"https:\/\/bookcurl.com\/products\/c-10-0-allinone-for-dummies-9781119839071","provider":"Book Curl","version":"1.0","type":"link"}