eager evaluation
early out, iterator blocks
ECMA, 2nd
e-commerce
Effective Java
efficiency
generic variance
standard query operators
Eiffel
Eini, Oren
elegance, 2nd, 3rd
element operators
ElementAt
Elements
elements
LINQ to XML
ElementsAfterSelf
ElementsBeforeSelf
ElementType, property of IQueryable
ellipsis in code snippets
embarrassingly parallel tasks
Embed Interop Types
embedded collections
embedded objects
with collection initializers
embedded sequences, group joins
embedding
languages within C#
Primary Interop Assemblies
emphasis
“what” vs “how”
Empty, 2nd
empty arrays
empty sequences, group joins matching no elements
encapsulation, 2nd, 3rd, 4th
delegates
events
enclosing types
encodings
reading files
EndContractBlock
EndInvoke, delegate method
EndXXX
enforcement preconditions
Enqueue
Ensures, 2nd
EnsuresOnThrow
Enter
entities, 2nd.
See also partial types.
change tracking
Entity Framework, 2nd
entry point, Code Contracts
enum
restriction on type constraints
Enumerable, 2nd, 3rd
enumeration
mapping in LINQ to SQL
terminology clash
enumerators
environment
adapting via extension methods
closures, 2nd
Environment.GetCommandLin eArgs
equality
joins
Nullable
equality operators, 2nd
EqualityComparer<T>
Equals, 2nd, 3rd
anonymous types
Nullable implementation
equals, contextual keyword
Equals()
equijoins
erasure, transparent identifiers
errata
errors
checking
dynamic code
messages
pragma directives
escaping string literals
eval
evaluation order
named arguments
null coalescing operator
Evans, Eric
event handlers, 2nd, 3rd, 4th
conventions
lambda expression examples
lambda expressions
EventArgs, 2nd
EventHandler, 2nd
events, 2nd, 3rd, 4th
avoiding nullity checks
changes to field-like events in C# 4
subscription
subscriptions, 2nd
everything Code Contracts retention option
evil uses of dynamic typing
evolution, 2nd, 3rd
Excel, 2nd
Except
Exception
catching ContractException
exceptions, 2nd
documentation
during delegate invocation
dynamic responses
handling postconditions
preconditions
specified in preconditions
thrown by Cast
thrown by invalid casts
thrown for invalid conversions
TryXXX pattern
while iterating over a sequence
ExceptWith
exclusive OR operator
executable caches
Execute
aggregation operators
method of IQueryProvider
ExecuteFile
execution model, abstracted by expression trees
execution modes, Parallel LINQ
execution order, clarity with extension methods
execution patterns
finally blocks
sequential appearance of iterator blocks
execution plans
execution time
array access checks
contract checking
execution-time types, virtual dispatch
Exists
exit points
invariant and postcondition checking
ExpandoObject, 2nd
experimental style
experimentation
experiments with code from the book
explicit conversions
LINQ to XML
method groups
Nullable<T>.
See also Nullable<T>, explicit conversions.
explicit interface implementation, 2nd
dynamic typing
explicit typing, 2nd
explicitly typed parameter lists, lambda expressions
explicitly typed range variables
Expression class, 2nd
expression evaluator
Watch and Immediate windows
expression trees, 2nd, 3rd, 4th
behavior in DLR rules
compiling
conversion from lambda expressions
dynamic typing, 2nd, 3rd
enhancements in .NET 4, 2nd
LINQ
restrictions on lambda
expression
conversions
used outside LINQ
visualizer in Visual Studio 2010
Expression, property of IQueryable
expressions
in object initializers
static typing, 2nd
value as a reference type or value type
ExpressionType
expressive code, 2nd, 3rd, 4th
extended types
of an extension method
options around namespaces
Extensible Application Markup Language
extension methods, 2nd, 3rd, 4th, 5th
calling
compile-time discovery
creating TimeSpan values
declaring
dynamic code
extending LINQ to Objects
guidance
LINQ to Rx
LINQ to XML
restrictions
used by query expressions
ExtensionAttribute
Extensions class
LINQ to XML
extern aliases
extra classes, generated to hold captured variables
F#, 2nd
F# Interactive
factory methods, 2nd, 3rd
expression trees
factory pattern, 2nd, 3rd
FakeQuery
FakeQueryProvider
false operator
field-like events
changes in C# 4
fields
automatically implemented properties
backing trivial properties
dynamic
field-like events
in Nullable<T>
lack of implicit typing
object initializers
FIFO
file handles
files, iterating over lines elegantly
FileStream
filtering, 2nd, 3rd, 4th, 5th, 6th, 7th
before joins
lambda expressions
LINQ to Rx
operators
finalizers
invariants
finally, 2nd, 3rd
FindAll, 2nd, 3rd, 4th, 5th
First
LinkedList<T>
first edition, Range class
first phase, type inference
FirstOrDefault
fixed
fixed type variables
FixedBufferAttribute
fixed-size buffers
flags
for nullable values
indicating missing values
Flash
flattening
LINQ to Rx
LINQ to XML
flattening sequences
flexibility, 2nd, 3rd, 4th
LINQ, 2nd
options for Code Contracts
float, special values
floating-point numbers
flow chart, type inference in C# 3
flow control
flow of execution, iterators
fluent interfaces
fluent notation
fluff, 2nd, 3rd, 4th
Foord, Michael
for statements
capturing the loop variable
implicitly typed local variables
ForAll
ForEach, 2nd, 3rd, 4th
foreach, 2nd, 3rd, 4th
capturing the loop variable
disposal of iterator, 2nd, 3rd, 4th
generics
implicit casting
foreach statements
anonymous types
implicitly typed local variables
foreign keys
formal parameters
formal specification
forward references
Fowler, Martin
framework
non-involvement in lifted operators
support for LINQ
uses of dynamic typing
framework libraries
frequently asked questions, nullity
friend assemblies
from
contextual keyword
multiple from clauses
FromEvent
fsi, F# Interactive
fully qualified names
Func<...> delegate types, 2nd, 3rd
function
function names, C++ template arguments
function pointers
functional programming, 2nd, 3rd, 4th, 5th, 6th, 7th
declarative style
languages
functionality, adding to existing types
functions, interoperability
fundamental units, value types
future changes
garbage collection, 2nd, 3rd, 4th
captured variables
delegates
effect of excessive boxing
iterators
garbage collector, generics
generated code, 2nd
equivalence of dot notation and query expressions
iterators
generated files
generation operators
generic collections, 2nd
generic delegate types
Action
Func
generic helper class
generic method definitions, retrieving through reflection
generic methods, 2nd, 3rd, 4th
reflection
type inference
generic type definition
specifying in reflection
generic type inference.
See type inference.
generic types
example with Dictionary <TKey, TValue>
reflection
unaided by type inference
generic variance, 2nd, 3rd, 4th
C# 4
explicit declaration requirement
Java
restrictions
generics, 2nd, 3rd, 4th
anonymous types
closed types, 2nd
constructed types
Java
lack of generic properties etc
limitations
open types, 2nd
operators
pronunciation
reflection
type constraints
type parameter substitution
ubiquity within language specification
unbound types
get_, avoided by named indexers
GetConsoleScreenBufferEx
GetDynamicMemberNames(), 2nd
GetEnumerator, 2nd, 3rd, 4th, 5th, 6th
GetGenericArguments
GetGenericTypeDefinition
GetHashCode, 2nd, 3rd
anonymous types
Nullable<T> implementation
GetInvocationList
GetKeyForItem
GetMemberBinder
GetMetaObject, 2nd
GetMethods
getters, 2nd
GetType, 2nd
GetUnderlyingType
GetValueOrDefault
GetVariable
GetViewBetween
global namespace alias
global scope, IronPython
glue, Queryable methods
gmcs
goes to, lambda expressions
Google, 2nd
AppEngine
gotchas, dynamic typing
grammar, domain specific languages
graphing
Gravell, Marc, 2nd
Groovy, 2nd
group ... by
group joins
group, contextual keyword
GroupBy, 2nd, 3rd
grouping
LINQ to Rx
order of results
grouping expressions
grouping operators
GroupJoin, 2nd
GTK#
guarantees, Code Contracts
guidance
anonymous types
captured variables
extending LINQ to Objects
extension methods
implicit typing
GUIDs, checksum pragma directives
gut feelings
implicit typing
hash collisions
hash tables
hashing
generic interfaces
joins
HashSet
Hashtable, 2nd, 3rd
HasValue, 2nd.
See also Nullable, HasValue property.
heap, 2nd, 3rd, 4th, 5th
hello, world
helper classes
helper methods
initializing collections
method group conversions
hierarchical structure, code mirroring XML document
higher-order functions, 2nd
hooks, partial methods
hosting languages
fluent interfaces
within C#
hot observables
HTML
hyperbole
ICloneable
ICollection<T>, 2nd, 3rd
optimizing LINQ operators
IComparable<T>
IComparer, 2nd, 3rd
IComparer and IComparer<T>, 2nd, 3rd, 4th, 5th, 6th
IDE, 2nd, 3rd, 4th
identity
DataContext
identity conversions, 2nd
IDictionary
ExpandoObject
idioms
code, 2nd
delegates
IDispatch
IDisposable, 2nd, 3rd, 4th, 5th, 6th
iterator block implementation
iterator disposal in foreach
IDynamicMetaObjectProvider, 2nd
ExpandoObject
IEEE-754
IEnumerable, 2nd, 3rd, 4th, 5th, 6th
collection initializers
iterator blocks, 2nd, 3rd
LINQ, 2nd, 3rd
concurrent collections
returned from axis methods
IEnumerator, 2nd, 3rd
IEqualityComparer, 2nd, 3rd
IEquatable
if/else blocks
IgnoreCase
IGroupedObservable
IGrouping, 2nd
IL, 2nd, 3rd, 4th, 5th.
See also Intermediate Language.
const and default parameter values
faked ref arguments
generated for object initializers
type system, 2nd, 3rd, 4th, 5th
ildasm, 2nd, 3rd, 4th
IList, 2nd, 3rd
IList<T>, 2nd
immediate execution, 2nd
custom LINQ operators
Immediate window, Visual Studio
immutability, 2nd, 3rd, 4th, 5th.
See also mutability.
collections, 2nd
expression trees, 2nd
futility of invariants
method call chaining
impedance mismatch, 2nd
imperative model, 2nd
implementation
partial methods
revealing contracts
simplicity of LINQ to Objects
implementation details
dynamic typing
generated names
transparent identifiers
implicit conversions, 2nd, 3rd, 4th, 5th
array covariance, 2nd
conditional operator
default parameter values
due to type constraints
dynamic
extension methods
for wrapper types
generic variance
method group conversions
method groups
Nullable<T>
role in type inference
string to XName
string to XNamespace
to object
implicit conversions, Nullable<T>.
See Nullable<T>, implicit conversions.
implicit joins, LINQ to SQL
implicit obligations
arithmetic
array bounds
non-nullity
implicit parameter lists, lambda expressions
implicit typing, 2nd, 3rd, 4th
projections
range variables
implicitly typed arrays
type inference
implicitly typed local variables, 2nd, 3rd
anonymous types
lambda expression examples
implicitly typed parameters
anonymous methods
lambda expressions
type inference
impure code
in keyword
in modifier, contravariance
inclusive OR operator
inconsistency, naming conventions
indentation
independence, multiple iterators over one collection
independent responsibilities
index, overloads for Select and Where
indexed properties
indexers
Dictionary<TKey, TValue>
named
optional parameters and named arguments
IndexOf, 2nd
indirection
delegates, 2nd
InDocumentOrder
-infer
inference
implicitly typed local variables, 2nd
type parameters for generic methods
inferred return types
anonymous functions
comparing anonymous function conversions
infinite loops
infinite sequences
infinity
infoof
inheritance, 2nd, 3rd
contracts
deriving from type parameters in C++
method group conversions
overload resolution
variance, 2nd, 3rd
initialization, 2nd
arrays
immutable types
implicitly typed local variables
partial types
initialization expressions
inline initialization for “constants”
inline specification of delegate actions
inlining
inner joins
use in object-oriented code
inner sequence
INotifyCollectionChanged
INotifyPropertyChanged
input positions, contravariance
InsertAt
InsertItem
instance members
capturing this reference
instance methods
calling on null references
delegate example
preferred over extension methods
using to create delegate instances
instance variables, representing local variables in iterators
instant messaging
instantiation of local variables
instincts
integer literals, potential confusion with implicit typing
integration, with LINQ
IntelliSense, 2nd, 3rd, 4th
extension methods, 2nd
intentions, communicating via Code Contracts
interfaces, 2nd, 3rd, 4th, 5th
adding functionality
anonymous types
array covariance
breaking changes
collections
comparison with contracts
comparison with delegates
comparison with duck typing
contract classes
extension methods
generic variance, 2nd
inherited contracts
interface keyword
out-of-process LINQ providers
return type covariance
static classes
static members
Interlocked
intermediate computations, let clauses
intermediate format, LINQ queries
Intermediate Language.
See IL.
intermediate variable, method group conversions
internal accessibility
internal classes, hiding implementation details
InternalsVisibleToAttribute
interoperability, 2nd, 3rd, 4th
interpreters, 2nd, 3rd, 4th
Intersect
IntersectWith
into, contextual keyword
introspection, LINQ queries
InvalidCastException, 2nd
InvalidOperationException, 2nd, 3rd, 4th
invariance, 2nd
Invariant method
invariants, 2nd
breaking via inheritance
inherited contracts
Inversion of Control, 2nd
invocation
delegates
field-like events
invocation list
Invoke, 2nd
delegate method
InvokeMemberBinder, 2nd
invoking methods, reflection
IObservable, 2nd
IObserver, 2nd
IOrderedEnumerable
iPad
iPhone, 2nd
iPod Touch
IProducerConsumerCollection<T>
IQueryable, 2nd
IQueryProvider
IronPython, 2nd, 3rd
binder reuse
using from C# 4
IronRuby
binder reuse
is operator
breaking changes
ISet, 2nd
IsGenericMethod
IsGenericType
IsGenericTypeDefinition
IsInterned
IsNullOrEmpty
isolating dynamic typing
IsProperSubsetOf
IsProperSupersetOf
IsReadOnly
IsSubsetOf
IsSupersetOf
IStructuralComparable
IStructuralEquatable
ITask
Items
iterable
iteration pattern
iteration variables, foreach loops
iterator blocks, 2nd, 3rd, 4th
elegance
iterators, 2nd, 3rd
implementing in C# 1
real-life examples
yield type
Java, 2nd
generics, 2nd
JavaScript, 2nd, 3rd, 4th
JIT compiler, 2nd, 3rd, 4th
DLR caches
expression trees, 2nd
generics, 2nd, 3rd, 4th
Join, 2nd, 3rd
custom comparisons
join ... into, not a continuation
join operators
join plans, LINQ to Rx
join-calculus
joins
LINQ to SQL
query expressions
Just-In-Time compilation.
See also JIT compiler.
just-in-time, iterator behavior
kernel profile
Key modifier, VB anonymous types
key selectors, 2nd
Key, property in IGrouping<,>
KeyedCollection
KeyNotFoundException
KeyPress event
KeyPressEventArgs
KeyPressEventHandler, 2nd
keys
grouping
joins
keystrokes, saved by implicit typing
KeyValuePair
KeyValuePair<TKey, TValue>, 2nd
Knuth, Donald
3.144.252.204