万本电子书0元读

万本电子书0元读

顶部广告

.NET 4.0 Generics电子书

售       价:¥

2人正在读 | 0人评论 9.8

作       者:Sudipta Mukherjee

出  版  社:Packt Publishing

出版时间:2012-01-26

字       数:115.4万

所属分类: 进口书 > 外文原版书 > 电脑/网络

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
This book is aimed at beginners in Generics. It assumes some working knowledge of C# , but it isn’t mandatory.
目录展开

.NET 4.0 Generics

Table of Contents

.NET 4.0 Generics

Credits

Foreword

About the Author

Acknowledgement

About the Reviewers

www.PacktPub.com

Support files, eBooks, discount offers and more

Why Subscribe?

Free Access for Packt account holders

Preface

What this book covers

What you need for this book

Who this book is for

Conventions

Time for action – heading

What just happened?

Pop quiz – heading

Have a go hero – heading

Reader feedback

Customer support

Downloading the example code

Errata

Piracy

Questions

1. Why Generics?

An analogy

Reason 1: Generics can save you a lot of typing

Reason 2: Generics can save you type safety woes, big time

What's the problem with this approach?

Reason 3: Generics leads to faster code

Reason 4: Generics is now ubiquitous in the .NET ecosystem

Setting up the environment

Summary

2. Lists

Why bother learning about generic lists?

Types of generic lists

Checking whether a sequence is a palindrome or not

Time for action – creating the generic stack as the buffer

What just happened?

Time for action – completing the rest of the method

What just happened?

Designing a generic anagram finder

Time for action – creating the method

What just happened?

Have a go hero – use this method to find anagrams from a dictionary

Life is full of priorities, let's bring some order there

Time for action – creating the data structure for the prioritized shopping list

What just happened?

Time for action – let's add some gadgets to the list and see them

What just happened?

Time for action – let's strike off the gadgets with top-most priority after we have bought them

What just happened?

Time for action – let's create an appointment list

What just happened?

Live sorting and statistics for online bidding

Time for action – let's create a custom class for live sorting

What just happened?

Why did we have three LinkedList<T> as part of the data structure?

Pop quiz

An attempt to answer questions asked by your boss

Time for action – associating products with live sorted bid amounts

What just happened?

Time for action – finding common values across different bidding amount lists

What just happened?

Have a go hero – finding common demographic statistics for the bidders

You will win every scrabble game from now on

Time for action – creating the method to find the character histogram of a word

Time for action – checking whether a word can be formed

Time for action – let's see whether it works

Pop quiz

Have a go hero – explain the code!

Trying to fix an appointment with a doctor?

Time for action – creating a set of dates of the doctors' availability

What just happened?

Time for action – finding out when both doctors shall be present

What just happened?

Pop quiz

Revisiting the anagram problem

Time for action – re-creating the anagram finder

What just happened?

Lists under the hood

Summary

3. Dictionaries

Types of generic associative structures

Creating a tag cloud generator using dictionary

Time for action – creating the word histogram

What just happened?

Have a go hero

Pop quiz

Creating a bubble wrap popper game

Time for action – creating the game console

What just happened?

Look how easy it was!

How did we decide we need a dictionary and not a list?

Let's build a generic autocomplete service

Time for action – creating a custom dictionary for autocomplete

What just happened?

Time for action – creating a class for autocomplete

What just happened?

The most common pitfall. Don't fall there!

Let's play some piano

Time for action – creating the keys of the piano

What just happened?

How are we recording the key strokes?

Time for action – switching on recording and playing recorded keystrokes

How it works?

C# Dictionaries can help detect cancer. Let's see how!

Time for action – creating the KNN API

What just happened?

Time for action – getting the patient records

Time for action – creating the helper class to read a delimited file

What just happened?

Time for action – let's see how to use the predictor

What just happened?

Tuples are great for many occasions including games

Time for action – putting it all together

What just happened?

Why have we used Tuples?

How did we figure out whether the game is over or not?

Have a go hero

Summary

4. LINQ to Objects

What makes LINQ?

Extension methods

Time for action – creating an Extension method

What just happened?

Time for action – consuming our new Extension method

What just happened?

Check out these guidelines for when not to use Extension methods

Object initializers

Collection initializers

Implicitly typed local variables

Anonymous types

Lambda expressions

Functors

Predicates

Actions

Putting it all together, LINQ Standard Query Operators

Time for action – getting the LINQPad

Restriction operators

Where()

Time for action – finding all names with *am*

What just happened?

Time for action – finding all vowels

What just happened?

Time for action – finding all running processes matching a Regex

What just happened?

Time for action – playing with the indexed version of Where()

What just happened?

Time for action – learn how to go about creating a Where() clause

What just happened?

Pop quiz – doing the thing

Projection operators

Select()

Time for action – let's say "Hello" to your buddies

What just happened?

Making use of the overloaded indexed version of Select()

Time for action – radio "Lucky Caller" announcement

What just happened?

Have a go hero – can you tell me what's going on here?

SelectMany()

Time for action – flattening a dictionary

What just happened?

Partitioning operators

Take()

Time for action – leaving the first few elements

What just happened?

TakeWhile()

Time for action – picking conditionally

What just happened?

Skip()

Time for action – skipping save looping

What just happened?

SkipWhile()

Ordering operators

Reverse()

Time for action – reversing word-by-word

What just happened?

Time for action – checking whether a given string is a palindrome or not

What just happened?

OrderBy()

Sorting an array of strings alphabetically

Time for action – sorting names alphabetically

What just happened?

Time for action – sorting 2D points by their co-ordinates

What just happened?

Have a go hero – sorting Student objects

OrderByDescending()

ThenBy()

Time for action – sorting a list of fruits

What's the difference between a sequence of OrderBy().OrderBy() and OrderBy().ThenBy()?

ThenByDescending()

Grouping operator

GroupBy()

Time for action – indexing an array of strings

What just happened?

Time for action – grouping by length

What just happened?

Set operators

Intersect()

Time for action – finding common names from two names' lists

What just happened?

Union()

Time for action – finding all names from the list, removing duplicates

What just happened?

Concat()

Time for action – pulling it all together including duplicates

Except()

Time for action – finding all names that appear mutually exclusively

What just happened?

Distinct()

Time for action – removing duplicate song IDs from the list

Conversion operators

ToArray()

Time for action – making sure it works!

What just happened?

ToList()

Time for action – making a list out of IEnumerable<T>

What just happened?

ToDictionary()

Time for action – tagging names

What just happened?

ToLookup()

Time for action – one-to-many mapping

What just happened?

Element operators

First()

Time for action – finding the first element that satisfies a condition

What just happened?

How First() is different from Single()?

FirstOrDefault()

Time for action – getting acquainted with FirstOrDefault()

What just happened?

Last()

LastOrDefault()

SequenceEquals()

Time for action – checking whether a sequence is palindromic

What just happened?

ElementAt()

Time for action – understanding ElementAt()

What just happened?

ElementAtOrDefault()

DefaultIfEmpty()

Time for action – check out DefaultIfEmpty()

What just happened?

Generation operators

Range()

Time for action – generating arithmetic progression ranges

What just happened?

Time for action – running a filter on a range

What just happened?

Repeat()

Time for action – let's go round and round with Repeat()

What just happened?

Quantifier operators

Single()

Time for action – checking whether there is only one item matching this pattern

What just happened?

Pop quiz – doing the thing

SingleOrDefault()

Time for action – set to default if there is more than one matching elements

Any()

Time for action – checking Any()

What just happened?

All()

Time for action – how to check whether all items match a condition

Merging operators

Zip()

What just happened?

Summary

5. Observable Collections

Active change/Statistical change

Passive change/Non-statistical change

Data sensitive change

Time for action – creating a simple math question monitor

What just happened?

Time for action – creating the collections to hold questions

What just happened?

Time for action – attaching the event to monitor the collections

What just happened?

Time for action – dealing with the change as it happens

What just happened?

Time for action – dealing with the change as it happens

What just happened?

Time for action – putting it all together

What just happened?

Time for action – creating a Twitter browser

Time for action – creating the interface

Time for action – creating the TweetViewer user control design

Time for action – gluing the TweetViewer control

Time for action – putting everything together

What just happened?

Time for action – dealing with the change in the list of names in the first tab

What just happened?

Time for action – a few things to beware of at the form load

What just happened?

Time for action – things to do when names get added or deleted

What just happened?

Time for action – sharing the load and creating a task for each BackgroundWorker

What just happened?

Time for action – a sample run of the application

Have a go hero – archive tweets

Have a go hero – monitoring weather/stock

Summary

6. Concurrent Collections

Creating and running asynchronous tasks

Pattern 1: Creating and starting a new asynchronous task

Pattern 2: Creating a task and starting it off a little later

Pattern 3: Waiting for all running tasks to complete

Pattern 4: Waiting for any particular task

Pattern 5: Starting a task with an initial parameter

Simulating a survey (which is, of course, simultaneous by nature)

Time for action – creating the blocks

What just happened?

Devising a data structure for finding the most in-demand item

Time for action – creating the concurrent move-to-front list

What just happened?

Have a go hero – creating a virtual monitoring system

Time for action – simulating a bank queue with multiple tellers

What just happened?

Time for action – making our bank queue simulator more useful

What just happened?

Be a smart consumer, don't wait till you have it all

Exploring data structure mapping

Summary

7. Power Collections

Setting up the environment

BinarySearch()

Time for action – finding a name from a list of names

What just happened?

CartesianProduct()

Time for action – generating names of all the 52 playing cards

What just happened?

RandomShuffle()

Time for action – randomly shuffling the deck

What just happened?

NCopiesOf()

Time for action – creating random numbers of any given length

What just happened?

Time for action – creating a custom random number generator

What just happened?

ForEach()

Time for action – creating a few random numbers of given any length

What just happened?

Rotate() and RotateInPlace()

Time for action – rotating a word

What just happened?

Time for action – creating a word guessing game

What just happened?

Have a go hero

RandomSubset()

Time for action – picking a set of random elements

What just happened?

Reverse()

Time for action – reversing any collection

What just happened?

EqualCollections()

Time for action – revisiting the palindrome problem

What just happened?

DisjointSets()

Time for action – checking for common stuff

What just happened?

Time for action – finding anagrams the easiest way

What just happened?

Have a go hero

Creating an efficient arbitrary floating point representation

Time for action – creating a huge number API

What just happened?

Have a go hero

Creating an API for customizable default values

Time for action – creating a default value API

What just happened?

Mapping data structure

Algorithm conversion strategy

Summary

8. C5 Collections

Setting up the environment

Time for action – cloning Gender Genie!

What just happened?

Time for action – revisiting the anagram problem

What just happened?

Time for action – Google Sets idea prototype

What just happened?

Time for action – finding the most sought-after item

What just happened?

Sorting algorithms

Pattern 1: Sorting an array of integers

Pattern 2: Partially sorting an array—say, sort first five numbers of a long array

Pattern 3: Sorting a list of string objects

Summary

9. Patterns, Practices, and Performance

Generic container patterns

How these are organized

Pattern 1: One-to-one mapping

Pattern interface

Some concrete implementations

Example usages

Some situations where this pattern can be used

Pattern 2: One-to-many unique value mapping

Pattern interface

Some concrete implementations

Example usages

Some situations where this pattern can be used

Pattern 3: One-to-many value mapping

Pattern interface

Some concrete implementations

Example usages

Some situations where this pattern can be used

Pattern 4: Many-to-many mapping

Pattern interface

Some concrete implementations

Example usages

Some situations where this pattern can be used

A special Tuple<> pattern

Time for action – refactoring deeply nested if-else blocks

What just happened?

Best practices when using Generics

Selecting a generic collection

Best practices when creating custom generic collections

Performance analysis

Lists

Dictionaries/associative containers

Sets

How would we do this investigation?

Benchmarking experiment 1

Benchmarking experiment 2

Benchmarking experiment 3

Benchmarking experiment 4

Benchmarking experiment 5

Benchmarking experiment 6

Benchmarking experiment 7

Benchmarking experiment 8

Benchmarking experiment 9

Summary

A. Performance Cheat Sheet

Parameters to consider

B. Migration Cheat Sheet

C. Pop Quiz Answers

Chapter 2

Lists

Chapter 3

Dictionaries

Chapter 4

LINQ to Objects

Index

累计评论(0条) 2个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部