嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
EssentialCSharp 6.0 c# 6.0 本质论 原版图书代码
.
├── EssentialCSharp 6.0 c# 6.0 本质论 原版图书代码_EssentialCSharp-6.0.zip
└── EssentialCSharp-6.0
├── EssentialC#6 Errata.md
├── EssentialCSharp
│ ├── AssemblyInfo.cs
│ ├── Chapter01
│ │ ├── Chapter01.csproj
│ │ ├── Listing01.01.HelloWorldInC#.cs
│ │ ├── Listing01.02.BasicClassDeclaration.cs
│ │ ├── Listing01.03.BreakingApartHelloWorld.cs
│ │ ├── Listing01.04.TheMainMethodWithParametersAndAReturn.cs
│ │ ├── Listing01.05.MultipleStatementsOneOneLine.cs
│ │ ├── Listing01.06.SplittingAStatementAcrossMultipleLines.cs
│ │ ├── Listing01.07.NoIndentationFormatting.cs
│ │ ├── Listing01.08.RemovingWhitespace.cs
│ │ ├── Listing01.09.DeclaringAndAssigningAVariable.cs
│ │ ├── Listing01.10.DeclaringTwoVariablesWithinOneStatement.cs
│ │ ├── Listing01.11.ChangingTheValueOfAVariable.cs
│ │ ├── Listing01.12.AssignmentReturningAValueThatCanBeassignedAgain.cs
│ │ ├── Listing01.13.UsingSystemConsoleReadLine.cs
│ │ ├── Listing01.14.UsingSystemConsoleRead.cs
│ │ ├── Listing01.15.FormattingUsingStringInterpolation.cs
│ │ ├── Listing01.16.FormattingUsingCompositeFormatting.cs
│ │ ├── Listing01.17.SwappingTheIndexedPlaceholdersAndCorrespondingVariables.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter01.Tests
│ │ ├── Chapter01.Tests.csproj
│ │ ├── Listing01.01.Tests.cs
│ │ ├── Listing01.03.Tests.cs
│ │ ├── Listing01.04.Tests.cs
│ │ ├── Listing01.05.Tests.cs
│ │ ├── Listing01.06.Tests.cs
│ │ ├── Listing01.07.Tests.cs
│ │ ├── Listing01.08.Tests.cs
│ │ ├── Listing01.09.Tests.cs
│ │ ├── Listing01.11.Tests.cs
│ │ ├── Listing01.13.Tests.cs
│ │ ├── Listing01.14.Tests.cs
│ │ ├── Listing01.15.Tests.cs
│ │ ├── Listing01.16.Tests.cs
│ │ ├── Listing01.17.Tests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── Tests.cs.backup
│ ├── Chapter02
│ │ ├── Chapter02.csproj
│ │ ├── Listing02.01-2.06.SpecifyingLiteralValues.cs
│ │ ├── Listing02.02.SpecifyingALiteralDouble.cs
│ │ ├── Listing02.03.SpecifyingALiteralDecimal.cs
│ │ ├── Listing02.04.ExponentialNotation.cs
│ │ ├── Listing02.05.HexadecimalLiteralValue.cs
│ │ ├── Listing02.06.ExamplesOfAHexadecimalFormatSpecifier.cs
│ │ ├── Listing02.07.FormattingUsingTheRFormatSpecifier.cs
│ │ ├── Listing02.08-2.10.ComparingStringsEscapeSequencesAndUnicode.cs
│ │ ├── Listing02.09.DisplayingASingleQuoteUsingAnEscapeSequence.cs
│ │ ├── Listing02.10.UsingUnicodeEncodingToDisplayASmileyFace.cs
│ │ ├── Listing02.11.UsingTheNewlineCharacterToInsertANewline.cs
│ │ ├── Listing02.12.DisplayingATriangleUsingAVerbatimStringLiteral.cs
│ │ ├── Listing02.13.UsingStaticDirectives.cs
│ │ ├── Listing02.14.UsingStringsLengthMember.cs
│ │ ├── Listing02.15.Error-StringIsImmutable.cs
│ │ ├── Listing02.16.WorkingWithStrings.cs
│ │ ├── Listing02.17.AssigningNullToAString.cs
│ │ ├── Listing02.18.WorkingWithStrings.cs
│ │ ├── Listing02.19.ImplicitLocalVariablesWithAnonymousTypes.cs
│ │ ├── Listing02.20.UsingTheNullableModifier.cs
│ │ ├── Listing02.21.ExplicitCastExample.cs
│ │ ├── Listing02.22.OverflowingAnIntegerValue.cs
│ │ ├── Listing02.23.ACheckedBlockExample.cs
│ │ ├── Listing02.24.AnUncheckedBlockExample.cs
│ │ ├── Listing02.25.NotUsingTheCastOperatorForAnImplicitCast.cs
│ │ ├── Listing02.26.UsingTheCastOperatorForAnImplicitCast.cs
│ │ ├── Listing02.27.UsingIntParseToConvertAStringToANumericDataType.cs
│ │ ├── Listing02.28.TypeConversionUsingSystemConvert.cs
│ │ ├── Listing02.29.UsingToStringToConvertToAString.cs
│ │ ├── Listing02.30.UsingTryParseInPlaceOfAnInvalidCastException.cs
│ │ ├── Listing02.31.DeclaringAnArray.cs
│ │ ├── Listing02.32.DeclaringATwoDimensionalArray.cs
│ │ ├── Listing02.33.ArrayDeclarationWithAssignment.cs
│ │ ├── Listing02.34.ArrayAssignmentFollowingDeclaration.cs
│ │ ├── Listing02.35.ArrayAssignmentWithNewDuringDeclaration.cs
│ │ ├── Listing02.36.DeclarationAndAssignmentWithTheNewKeyword.cs
│ │ ├── Listing02.37.AssigningWithoutLiteralValues.cs
│ │ ├── Listing02.38.DefiningTheArraySizeAtRuntime.cs
│ │ ├── Listing02.39.DeclaringATwoDimensionalArray.cs
│ │ ├── Listing02.40.InitializingATwoDimensionalArrayOfIntegers.cs
│ │ ├── Listing02.41.AMultidimensionalArrayWithInconsistentSizeCausingAnError.cs
│ │ ├── Listing02.42.InitializingAThreeDimensionalArray.cs
│ │ ├── Listing02.43.InitializingAJaggedArray.cs
│ │ ├── Listing02.44.DeclaringAndAccessingAnArray.cs
│ │ ├── Listing02.45.SwappingDataBetweenPositionsInAnArray.cs
│ │ ├── Listing02.46.InitializingATwoDimensionalArrayOfIntegers.cs
│ │ ├── Listing02.47.DeclaringAJaggedArray.cs
│ │ ├── Listing02.48.RetrievingTheLengthOfAnArray.cs
│ │ ├── Listing02.49.AccessingOutsideTheBoundsOfAnArrayThrowingAnException.cs
│ │ ├── Listing02.50.UsingLengthMinus1InTheArrayIndex.cs
│ │ ├── Listing02.51.AdditionalArrayMethods.cs
│ │ ├── Listing02.52.RetrievingAParticularDimensionsSize.cs
│ │ ├── Listing02.53.LookingForCommandlineOptions.cs
│ │ ├── Listing02.54.LookingForCommandlineOptionsSimplified.cs
│ │ ├── Listing02.55.ReversingAString.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter02.Tests
│ │ ├── Chapter02.Tests.csproj
│ │ ├── Listing02.01.Tests.cs
│ │ ├── Listing02.07.Tests.cs
│ │ ├── Listing02.08.Tests.cs
│ │ ├── Listing02.11.Tests.cs
│ │ ├── Listing02.12.Tests.cs
│ │ ├── Listing02.13.Tests.cs
│ │ ├── Listing02.14.Tests.cs
│ │ ├── Listing02.17.Tests.cs
│ │ ├── Listing02.18.Tests.cs
│ │ ├── Listing02.21.Tests.cs
│ │ ├── Listing02.50.AdditionalArrayMethods.Tests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── Tests.cs.backup
│ ├── Chapter03
│ │ ├── Chapter03.csproj
│ │ ├── Listing03.01.SimpleOperator.cs
│ │ ├── Listing03.02.Negative.cs
│ │ ├── Listing03.03.BinaryOperators.cs
│ │ ├── Listing03.04.NonNumericTypes.cs
│ │ ├── Listing03.05.CharConcatenation.cs
│ │ ├── Listing03.06.CharDifference.cs
│ │ ├── Listing03.07.UnexpectedInequality.cs
│ │ ├── Listing03.08.DivisionByZero.cs
│ │ ├── Listing03.09.BoundOverflow.cs
│ │ ├── Listing03.10.Increment.cs
│ │ ├── Listing03.11.IncrementOperator.cs
│ │ ├── Listing03.12.OtherOperators.cs
│ │ ├── Listing03.13.UnaryIncrement.cs
│ │ ├── Listing03.14.UnaryDecrement.cs
│ │ ├── Listing03.15.DisplayUnicode.cs
│ │ ├── Listing03.16.PostIncrement.cs
│ │ ├── Listing03.17.PreIncrement.cs
│ │ ├── Listing03.18.ComparingPrefixAndPostfix.cs
│ │ ├── Listing03.19.DeclaringConstants.cs
│ │ ├── Listing03.20.IfElseStatement.cs
│ │ ├── Listing03.21.NestedIf.cs
│ │ ├── Listing03.22.ElseIf.cs
│ │ ├── Listing03.23.NoCodeBlock.cs
│ │ ├── Listing03.24.WithCodeBlock.cs
│ │ ├── Listing03.25.RelyingOnIndentation.cs
│ │ ├── Listing03.26.IdenticalInFunctionality.cs
│ │ ├── Listing03.27.OutOfScope.cs
│ │ ├── Listing03.28.BooleanExpression.cs
│ │ ├── Listing03.29.AssignmentAsCondition.cs
│ │ ├── Listing03.30.AssignAsBool.cs
│ │ ├── Listing03.31.EqualityOperator.cs
│ │ ├── Listing03.32.OrOperator.cs
│ │ ├── Listing03.33.AndOperator.cs
│ │ ├── Listing03.34.LogicalNegationOperator.cs
│ │ ├── Listing03.35.ConditionalOperator.cs
│ │ ├── Listing03.36.NullCoalescingOperator.cs
│ │ ├── Listing03.37.NullConditionalOperator.cs
│ │ ├── Listing03.38.NullConditionalOperatorWithIndexOperator.cs
│ │ ├── Listing03.39.RightShiftOperator.cs
│ │ ├── Listing03.40.BitwiseOperators.cs
│ │ ├── Listing03.41.StringRepresentationOfBinary.cs
│ │ ├── Listing03.42.LogicalAssignmentOperators.cs
│ │ ├── Listing03.43.WhileLoop.cs
│ │ ├── Listing03.44.DoWhileLoop.cs
│ │ ├── Listing03.45.ForLoop.cs
│ │ ├── Listing03.46.ForWithMultipleExpressions.cs
│ │ ├── Listing03.47.DeterminingRemainingMoves.cs
│ │ ├── Listing03.48.InputValidation.cs
│ │ ├── Listing03.49.SwitchStatement.cs
│ │ ├── Listing03.50.BreakStatement.cs
│ │ ├── Listing03.51.SettingABit.cs
│ │ ├── Listing03.52.DeterminingEmailDomain.cs
│ │ ├── Listing03.53.ReplacingContinueWithIf.cs
│ │ ├── Listing03.54.GotoStatements.cs
│ │ ├── Listing03.55.ExcludingCode.cs
│ │ ├── Listing03.56.Directives.cs
│ │ ├── Listing03.57.DefineDirective.cs
│ │ ├── Listing03.58.WarningDirective.cs
│ │ ├── Listing03.59.PragmaDirective.cs
│ │ ├── Listing03.60.PragmaRestore.cs
│ │ ├── Listing03.61.LineWarning.cs
│ │ ├── Listing03.62.Regions.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter03.Tests
│ │ ├── Chapter03.Tests.csproj
│ │ ├── Listing03.01.SimpleOperator.Tests.cs
│ │ ├── Listing03.02.Negative.Tests.cs
│ │ ├── Listing03.03.BinaryOperators.Tests.cs
│ │ ├── Listing03.07.UnexpectedInequality.Tests.cs
│ │ ├── Listing03.18.ComparingPrePostIncrementOperators.cs
│ │ ├── Listing03.21.NestedIfStatements.cs
│ │ ├── Listing03.24.WithCodeBlock..Tests.cs
│ │ ├── Listing03.25.RelyingOnIndentation.Tests.cs
│ │ ├── Listing03.26.IdenticalInFunctionality.Tests.cs
│ │ ├── Listing03.41.StringRepresentationOfBinary.Tests.cs
│ │ ├── Listing03.46.ForWithMultipleExpressions.Tests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── Tests.cs.backup
│ ├── Chapter04
│ │ ├── Chapter04.csproj
│ │ ├── Listing04.01.GroupingStatementsIntoMethods.cs
│ │ ├── Listing04.02.SimpleMethodCall.cs
│ │ ├── Listing04.03.PassingAMethodReturnAsAParameterToAnotherMehtodCall.cs
│ │ ├── Listing04.04.DeclaringAMethod.cs
│ │ ├── Listing04.05.AReturnStatementBeforeTheEndOfAmethod.cs
│ │ ├── Listing04.06.UsingDirectiveExample.cs
│ │ ├── Listing04.07.SpecifyingTheUsingDirectiveInsideANamespaceDeclaration.cs
│ │ ├── Listing04.08.UsingStaticDirective.cs
│ │ ├── Listing04.09.DeclaringATypeAlias.cs
│ │ ├── Listing04.10.DeclaringATypeAliasWithTheSameName.cs
│ │ ├── Listing04.11.PassingCommandLineArgumentsToMain.cs
│ │ ├── Listing04.12.PassingVariablesByValue.cs
│ │ ├── Listing04.13.PassingVariablesByReference.cs
│ │ ├── Listing04.14.PassingVariablesOutOnly.cs
│ │ ├── Listing04.14.PassingVariablesOutOnly.cs~
│ │ ├── Listing04.15.PassingAVariableParameterList.cs
│ │ ├── Listing04.16.CountingLinesGivenADirectory.cs
│ │ ├── Listing04.17.CountingLinesUsingOverloading.cs
│ │ ├── Listing04.18.MethodsWithOptionalParameters.cs
│ │ ├── Listing04.19.SpecifyingParametersByName.cs
│ │ ├── Listing04.20.ConvertingAStringToAnInt.cs
│ │ ├── Listing04.21.CatchingAnException.cs
│ │ ├── Listing04.22.FinallyWithoutCatch.cs
│ │ ├── Listing04.23.GeneralCatchBlocks.cs
│ │ ├── Listing04.24.ThrowingAnException.cs
│ │ ├── Listing04.25.RethrowingAnException.cs
│ │ ├── Listing04.26.TryCatch.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter04.Tests
│ │ ├── Chapter04.Tests.csproj
│ │ ├── Listing04.03.PassingAMethodReturnAsAParameterToAnotherMehtodCall.Tests.cs
│ │ ├── Listing04.04.DeclaringAMethod.Tests.cs
│ │ ├── Listing04.06.UsingDirectiveExample.Tests.cs
│ │ ├── Listing04.11.PassingCommandLineArgumentsToMain.Tests.cs
│ │ ├── Listing04.12.PassingVariablesByValue.Tests.cs
│ │ ├── Listing04.13.PassingVariablesByReference.Tests.cs
│ │ ├── Listing04.14.PassingVariablesOutOnly.Tests.cs
│ │ ├── Listing04.15.PassingAVariableParameterList.Tests.cs
│ │ ├── Listing04.16.CountingLinesGivenADirectory.Tests.cs
│ │ ├── Listing04.17.CountingLinesUsingOverloading.Tests.cs
│ │ ├── Listing04.18.MethodsWithOptionalParameters.Tests.cs
│ │ ├── Listing04.20.ConvertingAStringToAnInt.Tests.cs
│ │ ├── Listing04.21.CatchingAnException.Tests.cs
│ │ ├── Listing04.22.FinallyWithoutCatch.Tests.cs
│ │ ├── Listing04.23.GeneralCatchBlocks.Tests.cs
│ │ ├── Listing04.24.ThrowingAnException.Tests.cs
│ │ ├── Listing04.25.RethrowingAnException.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter05
│ │ ├── Chapter05.csproj
│ │ ├── Listing05.01.DefiningAClass.cs
│ │ ├── Listing05.02.DeclaringVariablesOfTheClassType.cs
│ │ ├── Listing05.03.InstantiatingAClass.cs
│ │ ├── Listing05.04.DeclaringFields.cs
│ │ ├── Listing05.05.SettingInitialValuesOfFieldsAtDeclarationTime.cs
│ │ ├── Listing05.06.AccessingFields.cs
│ │ ├── Listing05.07.AccessingFieldsFromWithinTheContainingClass.cs
│ │ ├── Listing05.08.AccessingFieldsFromOutsideTheContainingClass.cs
│ │ ├── Listing05.09.UsingThisToIdentifyTheFieldsOwnerExplicitly.cs
│ │ ├── Listing05.10.UsingThisToAvoidAmbiguity.cs
│ │ ├── Listing05.11.UsingThisWithAMethod.cs
│ │ ├── Listing05.12.PassingThisInAMethodCall.cs
│ │ ├── Listing05.13.DataPersistenceToAFile.cs
│ │ ├── Listing05.14.DataRetrievalFromAFile.cs
│ │ ├── Listing05.15.UsingThePrivateAccessModifier.cs
│ │ ├── Listing05.16.GettersAndSetters.cs
│ │ ├── Listing05.17.DefiningProperties.cs
│ │ ├── Listing05.18.AutomaticallyImplementedProperties.cs
│ │ ├── Listing05.19.ProvidingPropertyValidation.cs
│ │ ├── Listing05.20.DefiningReadOnlyProperties.cs
│ │ ├── Listing05.21.DefiningProperties.cs
│ │ ├── Listing05.22.PlacingAccessModifiersOnSetters.cs
│ │ ├── Listing05.25.DefiningAConstructor.cs
│ │ ├── Listing05.26.CallingAConstructor.cs
│ │ ├── Listing05.27.DefaultConstructorNoLongerAvailable.cs
│ │ ├── Listing05.28.CallingAnObjectInitializer.cs
│ │ ├── Listing05.29.CallingAnObjectInitializer.cs
│ │ ├── Listing05.30.OverloadingAConstructor.cs
│ │ ├── Listing05.31.CallingOneConstructorFromAnother.cs
│ │ ├── Listing05.32.ProvidingAnInitializationMethod.cs
│ │ ├── Listing05.33.ImplicitLocalVariablesWithAnonymousTypes.cs
│ │ ├── Listing05.34.DeclaringAStaticField.cs
│ │ ├── Listing05.35.AssigningAStaticFieldAtDeclaration.cs
│ │ ├── Listing05.36.AccessingAStaticField.cs
│ │ ├── Listing05.37.DefiningAStaticMethodOnDirectoryInfo.cs
│ │ ├── Listing05.38.DeclaringAStaticConstructor.cs
│ │ ├── Listing05.39.DeclaringAStaticProperty.cs
│ │ ├── Listing05.40.DeclaringAStaticClass.cs
│ │ ├── Listing05.41.StaticCopyMethodForDirectoryInfo.cs
│ │ ├── Listing05.42.DeclaringAConstantField.cs
│ │ ├── Listing05.43.DeclaringAFieldAsReadonly.cs
│ │ ├── Listing05.44.DeclaringAReadonlyFieldOfATypeWithNoLiteralValues.cs
│ │ ├── Listing05.45.DefiningANestedClass.cs
│ │ ├── Listing05.46.DefiningAPartialClass.cs
│ │ ├── Listing05.47.DefiningANestedClassInASeperatePartialClass.cs
│ │ ├── Listing05.48.DefiningANestedClassInASeperatePartialClass.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter05.Tests
│ │ ├── Chapter05.Tests.csproj
│ │ ├── Listing05.40.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter06
│ │ ├── Chapter06.csproj
│ │ ├── Listing06.01.RefactoringIntoABaseClass.cs
│ │ ├── Listing06.02.UsingInheritedMethods.cs
│ │ ├── Listing06.03.ClassesDerivingFromEachOtherToFormAnInheritanceChain.cs
│ │ ├── Listing06.04.ImplicitBaseTypeCasting.cs
│ │ ├── Listing06.05.DefiningCastOperators.cs
│ │ ├── Listing06.06.PrivateMembersAreNotInherited.cs
│ │ ├── Listing06.07.ProtectedMembersAreAccessibleOnlyFromDerivedClasses.cs
│ │ ├── Listing06.08.WorkingAroundSingleInheritanceUsingAggregation.cs
│ │ ├── Listing06.09.PreventingDerivationWithSealedClasses.cs
│ │ ├── Listing06.10.OverridingAProperty.cs
│ │ ├── Listing06.11.RuntimeCallingTheMostDerivedImplementationOfAVirtualMethod.cs
│ │ ├── Listing06.12.CarelesslyRelyingOnAVirtualMethodImplementation.cs
│ │ ├── Listing06.13.ForcingTheDesirableRunSemantics.cs
│ │ ├── Listing06.14.OverrideVersusNewModifier.cs
│ │ ├── Listing06.15.SealingMembers.cs
│ │ ├── Listing06.16.AccessingABaseMember.cs
│ │ ├── Listing06.17.SpecifyingWhichBaseConstructorToInvoke.cs
│ │ ├── Listing06.18.DefiningAnAbstractClass.cs
│ │ ├── Listing06.19.DefiningAbstractMembers.cs
│ │ ├── Listing06.20.UsingPolymorphismToListThePdaItems.cs
│ │ ├── Listing06.21.System.ObjectDerivationImpliedWhenNoDerivationIsSpecifiedExplicitly.cs
│ │ ├── Listing06.22.IsOperatorDeterminingTheUnderlyingType.cs
│ │ ├── Listing06.23.DataConversionUsingTheAsOperator.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter07
│ │ ├── Chapter07.csproj
│ │ ├── Listing07.01.DefiningAnInterface.cs
│ │ ├── Listing07.02.ImplementingAndUsingInterfaces.cs
│ │ ├── Listing07.03.ImplementingAnInterface.cs
│ │ ├── Listing07.04.CallingExplicitInterfaceMemberImplementations.cs
│ │ ├── Listing07.05.ExplicitInterfaceImplementation.cs
│ │ ├── Listing07.06.DerivingOneInterfaceFromAnother.cs
│ │ ├── Listing07.07.DeclarationWithoutContainingInterface.cs
│ │ ├── Listing07.08.UsingABaseInterfaceInTheClassDeclaration.cs
│ │ ├── Listing07.09.MultipleInterfaceInheritance.cs
│ │ ├── Listing07.10.InterfaceExtensionMethods.cs
│ │ ├── Listing07.11.WorkingAroundSingleInheritanceUsingAggregationWithInterfaces.cs
│ │ ├── Listing07.12.DerivingOneInterfaceFromAnother.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter08
│ │ ├── Chapter08.csproj
│ │ ├── Listing08.01.DefiningStruct.cs
│ │ ├── Listing08.02.ErroneousInitialization.cs
│ │ ├── Listing08.03.AccessError.cs
│ │ ├── Listing08.04.UsingTheDefaultOperatorToRetrieveTheDefaultValueOfAType.cs
│ │ ├── Listing08.05.SubtleBoxAndUnboxInstructions.cs
│ │ ├── Listing08.06.UnboxMustBeSameType.cs
│ │ ├── Listing08.07.SubtleBoxingIdiosyncrasies.cs
│ │ ├── Listing08.08.AvoidingUnboxingAndCopying.cs
│ │ ├── Listing08.09.ComparingAnIntegerSwitchToAnEnumSwitch.cs
│ │ ├── Listing08.10.DefiningAnEnum.cs
│ │ ├── Listing08.11.DefiningAnEnumType.cs
│ │ ├── Listing08.12.CastingBetweenArraysOfEnums.cs
│ │ ├── Listing08.13.ConvertingAStringToAnEnumUsingEnum.Parse.cs
│ │ ├── Listing08.14.ConvertingAStringToAnEnumUsingEnum.TryParse.cs
│ │ ├── Listing08.15.UsingEnumsAsFlags.cs
│ │ ├── Listing08.16.UsingBitwiseORandANDWithFlagEnums.cs
│ │ ├── Listing08.17.DefiningEnumValuesforFrequentCombinations.cs
│ │ ├── Listing08.18.UsingFlagsAttribute.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter09
│ │ ├── Chapter09.csproj
│ │ ├── Employee.cs
│ │ ├── Listing09.01.OverridingToString.cs
│ │ ├── Listing09.02.ImplementingGetHashCode.cs
│ │ ├── Listing09.03.OverridingEqualityOperator.cs
│ │ ├── Listing09.04.ValueTypesNeverReferenceEqualThemselves.cs
│ │ ├── Listing09.05.OverridingEquals.cs
│ │ ├── Listing09.06.ImplementingTheEqualsAndNotEqualsOperators.cs
│ │ ├── Listing09.07.AddingAnOperator.cs
│ │ ├── Listing09.08.CallingTheMinusAndPlusBinaryOperators.cs
│ │ ├── Listing09.09.OverloadingTheMinusAndPlusUnaryOperators.cs
│ │ ├── Listing09.10.TrueAndFalseOperators.cs
│ │ ├── Listing09.11.ProvidingAnImplicitConversionBetweenLatitudeAndDouble.cs
│ │ ├── Listing09.12.MakingTypesAvailableExternally.cs
│ │ ├── Listing09.13.DefiningANamespace.cs
│ │ ├── Listing09.14.NestedNamespaces.cs
│ │ ├── Listing09.15.NestingNamespacesWithPeriod.cs
│ │ ├── Listing09.16.UsingTheExternAliasDirective.cs
│ │ ├── Listing09.17.CommentingWithXML.cs
│ │ ├── Listing09.18.Comments.xml
│ │ ├── Listing09.19.WeakReferences.cs
│ │ ├── Listing09.20.DefiningAFinalizer.cs
│ │ ├── Listing09.21.ResourceCleanupWithIDisposable.cs
│ │ ├── Listing09.22.InvokingTheUsingStatement.cs
│ │ ├── Listing09.23.LazyLoadingAProperty.cs
│ │ ├── Listing09.24.UsingSystem.Lazy.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter09.Tests
│ │ ├── Chapter09.Tests.csproj
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter10
│ │ ├── Chapter10.csproj
│ │ ├── Listing10.01.ThrowingAnException.cs
│ │ ├── Listing10.02.CatchingDifferentExceptionTypes.cs
│ │ ├── Listing10.02A.ConditionalExceptionCatch.cs
│ │ ├── Listing10.03.UsingExceptionDispatchInfoToRethrowException.cs
│ │ ├── Listing10.04.CreatingACustomException.cs
│ │ ├── Listing10.05.DefiningASerializableException.cs
│ │ ├── Listing10.06.OverflowingAnIntegerValue.cs
│ │ ├── Listing10.07.ACheckedBlockExample.cs
│ │ ├── Listing10.08.AnUnCheckedBlockExample.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter10.Tests
│ │ ├── Chapter10.Tests.csproj
│ │ ├── Listing10.02A.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter11
│ │ ├── Chapter11.csproj
│ │ ├── Listing11.01.TheMethodSignatures.cs
│ │ ├── Listing11.02.SupportingUndoInEtchASketchGame.cs
│ │ ├── Listing11.03.DefiningASpecializedStackClass.cs
│ │ ├── Listing11.04.DefiningNullableVersionsOfValueTypes.cs
│ │ ├── Listing11.05.NullableTypeContainingAnObject.cs
│ │ ├── Listing11.06.ImplementingUndoWithAGenericStackClass.cs
│ │ ├── Listing11.07.DeclaringAGenericClassStack.cs
│ │ ├── Listing11.08.DeclaringAGenericInterface.cs
│ │ ├── Listing11.09.ImplementingAGenericInterface.cs
│ │ ├── Listing11.10.DuplicatingAnInterfaceImplementationOnASingleClass.cs
│ │ ├── Listing11.11.DeclaringAGenericTypeConstructor.cs
│ │ ├── Listing11.12.NotInitializingAllFieldsCasuingACompileError.cs
│ │ ├── Listing11.13.InitializingAFieldWithTheDefaultOperator.cs
│ │ ├── Listing11.14.DeclaringAGenericWithMultipleTypeParameters.cs
│ │ ├── Listing11.15.UsingATypewithMultipleTypeParameters.cs
│ │ ├── Listing11.16.UsingArityToOverloadATypeDefinition.cs
│ │ ├── Listing11.17.UsingATupleCreateFactoryMethods.cs
│ │ ├── Listing11.18.NestedGenericTypes.cs
│ │ ├── Listing11.19.DeclaringABinaryTreeClassWithNoConstraints.cs
│ │ ├── Listing11.20.NeedingTheTypeParameterToSupportAnInterface.cs
│ │ ├── Listing11.21.NeedingTheTypeParameterToSupportAnInterfaceOrExceptionThrown.cs
│ │ ├── Listing11.22.DeclaringAnInterfaceConstraint.cs
│ │ ├── Listing11.23.DeclaringABaseClassConstraint.cs
│ │ ├── Listing11.24.SpecifyingTheTypeParameterAsAValueType.cs
│ │ ├── Listing11.25.SpecifyingMultipleConstraints.cs
│ │ ├── Listing11.26.RequiringADefaultConstructorConstraint.cs
│ │ ├── Listing11.27.InheritedConstraintsSpecifiedExplicitly.cs
│ │ ├── Listing11.28.InheritedConstraintsSpecifiedExplicitly.cs
│ │ ├── Listing11.29.ConstraintExpressionsCannotRequireOperators.cs
│ │ ├── Listing11.30.CombiningConstraintsUsingOrRelationshipNotAllowed.cs
│ │ ├── Listing11.31.InheritanceConstraintsCannotBeDelegates.cs
│ │ ├── Listing11.32.ConstraintsCanOnlyBeSpecifiedForDefaultConstructors.cs
│ │ ├── Listing11.33.UsingAFactoryInterfaceInPlaceOfAConstructorConstraint.cs
│ │ ├── Listing11.34.DeclaringAnEntityToBeUsedInEntityDictionary.cs
│ │ ├── Listing11.35.DefiningGenericMethods.cs
│ │ ├── Listing11.36.SpecifyingTheTypeParameterExplicitly.cs
│ │ ├── Listing11.37.InferringTheTypeParameter.cs
│ │ ├── Listing11.38.SpecifyingConstraintsOnGenericMethods.cs
│ │ ├── Listing11.39.BinaryTreeRequiringIComparableTypeParameters.cs
│ │ ├── Listing11.40.ConversionBetweenGenericsWithDifferentTypeParameters.cs
│ │ ├── Listing11.41.PreventingCovarianceMaintainsHomogeneity.cs
│ │ ├── Listing11.42.PotentiallyPossibleCovariance.cs
│ │ ├── Listing11.43.CovarianceUsingTheOutTypeParameterModifier.cs
│ │ ├── Listing11.44 .CombiningCovarianceAndContravarianceInSingleGenericType.cs
│ │ ├── Listing11.44.ContravarianceUsingTheInTypeParameterModifier.cs
│ │ ├── Listing11.45.CompilerValidationOfVariance.cs
│ │ ├── Listing11.46.StackDeclaration.cs
│ │ ├── Listing11.47.CILCodeForStack.cs
│ │ ├── Listing11.48.CILWithExclamationPointNotation.cs
│ │ ├── Listing11.49.StackDefinition.cs
│ │ ├── Listing11.50.DeclaringVariablesOfTypeStack.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter12
│ │ ├── Chapter12.csproj
│ │ ├── Listing12.01.BubbleSortMethod.cs
│ │ ├── Listing12.02.BubbleSortMethodAscendingOrDescending.cs
│ │ ├── Listing12.03.BubbleSortMethodWithDelegateParameter.cs
│ │ ├── Listing12.04.DeclaringADelegateType.cs
│ │ ├── Listing12.05.DeclaringANestedDelegateType.cs
│ │ ├── Listing12.06.DeclaringAComparisonHandlerCompatibleMethod.cs
│ │ ├── Listing12.07.UsingMethodNameAsArgument.cs
│ │ ├── Listing12.08.PassingADelegateInstanceAsAParameterInCSharp.cs
│ │ ├── Listing12.09.SystemDelegateCannotBeBaseClass.cs
│ │ ├── Listing12.10.UsingADifferentComparisonHandlerCompatibleMethod.cs
│ │ ├── Listing12.11.CreatingDelegateWithStatementLambda.cs
│ │ ├── Listing12.12.OmittingParameterTypesFromStatementLambdas.cs
│ │ ├── Listing12.13.StatementLambdasWithASingleInputParameter.cs
│ │ ├── Listing12.14.ParameterlessStatementLambdas.cs
│ │ ├── Listing12.15.PassingADelegateWithAnExpressionLambda.cs
│ │ ├── Listing12.15__.PassingADelegateWithAStatementLambda.cs
│ │ ├── Listing12.16.PassingAnAnonymousMethod.cs
│ │ ├── Listing12.17.FuncAndActionDelegateDeclarations.cs
│ │ ├── Listing12.18.UsingVarianceForDelegates.cs
│ │ ├── Listing12.19.CSharpEquivalentOfCILGeneratedByTheCompilerForLambdaExpressions.cs
│ │ ├── Listing12.20.UsingAnOuterVariableInALambdaExpression.cs
│ │ ├── Listing12.21.CSharpEquivalentOfCILCodeGeneratedByCompilerForOuterVariables.cs
│ │ ├── Listing12.22.CapturingLoopVariablesCSharpFive.cs
│ │ ├── Listing12.23.LoopVariableWorkaroundBeforeCSharpFive.cs
│ │ ├── Listing12.24.ConvertingExpressionTreeToSqlWhereClause.cs
│ │ ├── Listing12.25.ExamingingAnExpressTree.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter12.Tests
│ │ ├── Chapter12.Tests.csproj
│ │ ├── Listing12.05.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter13
│ │ ├── 13.7.sequencediagram
│ │ ├── 13.7.sequencediagram.layout
│ │ ├── Copy of Listing13.09.HandlingExceptionsFromSubscribers.cs
│ │ ├── Listing13.01.HeaterAndCoolerEventSubscriberImplementations.cs
│ │ ├── Listing13.02.DefiningTheEventPublsherThermostat.cs
│ │ ├── Listing13.03.ConnectingThePublisherAndSubscribers.cs
│ │ ├── Listing13.04.ConnectingThePublisherAndSubscribers.cs
│ │ ├── Listing13.04.InvokingADelegate.cs
│ │ ├── Listing13.05.InvokingADelegate.cs
│ │ ├── Listing13.06.InvokingADelegatePre6.cs
│ │ ├── Listing13.07.UsingthePlusEqualsAndMinusEqualsDelegateOperators.cs
│ │ ├── Listing13.08.UsingThePlusAndMinusDelegateOperators.cs
│ │ ├── Listing13.09.OnTemperatureChangedThrowingAnException.cs
│ │ ├── Listing13.10.HandlingExceptionsFromSubscribers.cs
│ │ ├── Listing13.11.UsingTheAssignmentOperationRatherThanPlusEquals.cs
│ │ ├── Listing13.12.FiringTheEventFromOutsideTheEventContainer.cs
│ │ ├── Listing13.13.UsingTheEventKeywordWithTheEventCodingPattern.cs
│ │ ├── Listing13.14.DeclaringAGenericDelegateType.cs
│ │ ├── Listing13.15.FiringTheEventNotification.cs
│ │ ├── Listing13.16.UsingCustomDelegateType.cs
│ │ ├── Listing13.17.DeclaringTheOnTemperatureChangeEvent.cs
│ │ ├── Listing13.18.CSharpConceptualEquivalentOfEventCILCode.cs
│ │ ├── Listing13.19.CustomAddAndRemoveHandlers.cs
│ │ ├── Program_Main.sequencediagram
│ │ ├── Program_Main.sequencediagram.layout
│ │ ├── Program_Main_1.sequencediagram
│ │ ├── Program_Main_1.sequencediagram.layout
│ │ ├── Program_Main_2.sequencediagram
│ │ ├── Program_Main_2.sequencediagram.layout
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── chapter13.csproj
│ ├── Chapter13.Tests
│ │ ├── Chapter13.Tests.csproj
│ │ ├── Listing13.03.Tests.cs
│ │ ├── Listing13.04.Tests.cs
│ │ ├── Listing13.19.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter14
│ │ ├── Chapter14.csproj
│ │ ├── Listing14.01.ImplicitLocalVariablesWithAnonymousTypes.cs
│ │ ├── Listing14.02.TypeSafetyAndImmutabilityOfAnonymousTypes.cs
│ │ ├── Listing14.03.CollectionInitialization.cs
│ │ ├── Listing14.04.DictionaryInitializers.cs
│ │ ├── Listing14.05.InitializingAnonymousTypeArrays.cs
│ │ ├── Listing14.06.ForeachWithArrays.cs
│ │ ├── Listing14.07.CompiledImplementationOfForeachWithArrays.cs
│ │ ├── Listing14.08.IteratingOverACollectionUsingWhile.cs
│ │ ├── Listing14.09.ASeparateEnumeratorMaintainingStateDuringAnIteration.cs
│ │ ├── Listing14.10.CompiledResultOfForeachOnCollections.cs
│ │ ├── Listing14.11.ErrorHandlingAndResourceCleanupWithUsing.cs
│ │ ├── Listing14.12.SampleClassesForUseWithStandardQueryOperators.cs
│ │ ├── Listing14.13.FilteringWithSystem.Linq.Enumerable.Where.cs
│ │ ├── Listing14.14.ProjectionWithSystem.Linq.Enumerable.Select.cs
│ │ ├── Listing14.15.ProjectionWithSystem.Linq.Enumerable.Select.cs
│ │ ├── Listing14.16.ProjectionToAnAnonymousType.cs
│ │ ├── Listing14.17.ExecutingLinqQueriesInParallel.cs
│ │ ├── Listing14.18.CountingItemsWithCount.cs
│ │ ├── Listing14.19.FilteringWithSystem.Linq.Enumerable.Where.cs
│ │ ├── Listing14.20.OrderingWithSystem.Linq.Enumerable.OrderByAndThenBy.cs
│ │ ├── Listing14.21.SampleEmployeeAndDepartmentData.cs
│ │ ├── Listing14.22.AnInnerJoinUsingSystem.Linq.Enumerable.Join.cs
│ │ ├── Listing14.23.AnotherInnerJoinWithSystem.Linq.Enumerable.Join.cs
│ │ ├── Listing14.24.GroupingItemsTogetherUsingSystem.Linq.Enumerable.GroupBy.cs
│ │ ├── Listing14.25.CreatingAChildCollectionWithSystem.Linq.Enumerable.GroupJoin.cs
│ │ ├── Listing14.26.ImplementingAnOuterJoinUsingGroupJoinWithSelectMany.cs
│ │ ├── Listing14.27.CallingSelectMany.cs
│ │ ├── Listing14.28.MoreSystem.Linq.EnumerableMethodCalls.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter14.Tests
│ │ ├── Chapter14.Tests.csproj
│ │ ├── Listing14.04.Tests.cs
│ │ ├── Listing14.15.ProjectionWithSystem.Linq.Enumerable.Select.Tests.cs
│ │ ├── Listing14.16.ProjectionToAnAnonymousType.Tests.cs
│ │ ├── Listing14.17.ExecutingLinqQueriesInParallel.Tests.cs
│ │ ├── Listing14.28.MoreSystem.Linq.EnumerableMethodCalls.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter15
│ │ ├── Chapter15.csproj
│ │ ├── Listing15.01.SimpleQueryExpression.cs
│ │ ├── Listing15.02.ProjectingUsingQueryExpressions.cs
│ │ ├── Listing15.03.AnonymousTypesWithinQueryExpressions.cs
│ │ ├── Listing15.04.DeferredExecutionAndQueryExpressions1.cs
│ │ ├── Listing15.05.DeferredExecutionAndQueryExpressions2.cs
│ │ ├── Listing15.06.AnonymousTypesWithinQueryExpressions.cs
│ │ ├── Listing15.07.SortingUsingAQueryExpressionWithAnOrderbyClause.cs
│ │ ├── Listing15.08.ProjectingAFileInfoCollectionAndSortingByFileSize.cs
│ │ ├── Listing15.09.OrderingTheResultsInAQueryExpression.cs
│ │ ├── Listing15.10.GroupingTogetherQueryResults.cs
│ │ ├── Listing15.11.SelectingAnAnonymousTypeFollowingTheGroupbyClause.cs
│ │ ├── Listing15.12.SelectingWithoutTheQueryContinuation.cs
│ │ ├── Listing15.13.MultipleSelection.cs
│ │ ├── Listing15.14.CartesianProduct.cs
│ │ ├── Listing15.15.ObtainingDistinctMembersFromAQueryExpression.cs
│ │ ├── Listing15.16.SimpleQueryExpression.cs
│ │ ├── Listing15.17.StandardQueryOperatorSyntax.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter15.Tests
│ │ ├── Chapter15.Tests.csproj
│ │ ├── Listing15.01.Tests.cs
│ │ ├── Listing15.03.AnonymousTypesWithinQueryExpressions.Tests.cs
│ │ ├── Listing15.04.Tests.cs
│ │ ├── Listing15.05.Tests.cs
│ │ ├── Listing15.07.SortingUsingAQueryExpressionWithAnOrderbyClause.Tests.cs
│ │ ├── Listing15.08.ProjectingAFileInfoCollectionAndSortingByFileSize.Tests.cs
│ │ ├── Listing15.10.Tests.cs
│ │ ├── Listing15.11.Tests.cs
│ │ ├── Listing15.13.Tests.cs
│ │ ├── Listing15.15.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter16
│ │ ├── Chapter16.csproj
│ │ ├── Listing16.01.UsingList.cs
│ │ ├── Listing16.02.ImplementingIComparer.cs
│ │ ├── Listing16.03.UsingTheBitComplementOfTheBinarySearchResult.cs
│ │ ├── Listing16.04.DemonstratingFindAllAndItsPredicateParameter.cs
│ │ ├── Listing16.05.AddingItemsToADictionary.cs
│ │ ├── Listing16.06.InsertingItemsInADictionaryUsingTheIndexOperator.cs
│ │ ├── Listing16.07.IteratingOverDictionaryWithForeach.cs
│ │ ├── Listing16.07a.IteratingOverSortedDictionaryWithForeach.cs
│ │ ├── Listing16.08.ImplementingIEqualityComparer.cs
│ │ ├── Listing16.09.DefiningAnIndexer.cs
│ │ ├── Listing16.10.ChangingTheIndexersDefaultName.cs
│ │ ├── Listing16.11.DefiningAnIndexOperatorWithVariableParameters.cs
│ │ ├── Listing16.12.IteratorInterfacesPattern.cs
│ │ ├── Listing16.13.YieldingTheCSharpKeywordsSequentially.cs
│ │ ├── Listing16.14.UsingYieldToImplementBinaryTree.cs
│ │ ├── Listing16.15.UsingPair.GetEnumeratorViaForeach.cs
│ │ ├── Listing16.16.PlacingYieldReturnStatementsWithinALoop.cs
│ │ ├── Listing16.17.UsingForeachWithBinaryTree.cs
│ │ ├── Listing16.18.EscapingIterationViaYieldBreak.cs
│ │ ├── Listing16.19.CSharpEquivalentOfCompilerGeneratedCodeForIterators.cs
│ │ ├── Listing16.20.UsingYieldReturnInAMethodThatReturnsIEnumberable.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter16.Tests
│ │ ├── Chapter16.Tests.csproj
│ │ ├── Listing16.01.Tests.cs
│ │ ├── Listing16.07.Tests.cs
│ │ ├── Listing16.07a.Tests.cs
│ │ ├── Listing16.11.Tests.cs
│ │ ├── Listing16.17.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter17
│ │ ├── Chapter17.csproj
│ │ ├── Listing17.01.UsingTypeGetPropertiesToObtainAnObjectsPublicProperties.cs
│ │ ├── Listing17.02.UsingTypeofToCreateASystem.TypeInstance.cs
│ │ ├── Listing17.03.DynamicallyInvokingAMember.cs
│ │ ├── Listing17.04.LeveragingNameofWithINotifyPropertyChanged.cs
│ │ ├── Listing17.05.DeclaringTheStackClass.cs
│ │ ├── Listing17.06.ReflectionWithGenerics.cs
│ │ ├── Listing17.07.UsingReflectionWithGenericTypes.cs
│ │ ├── Listing17.08.DecoratingAPropertyWithAnAttribute.cs
│ │ ├── Listing17.09.DecoratingAPropertyWithMultipleAttributes.cs
│ │ ├── Listing17.10.AssemblyAttributesWithinAssemblyInfo.cs
│ │ ├── Listing17.11.SpecifyingAReturnAttribute.cs
│ │ ├── Listing17.12.DefiningACustomAttribute.cs
│ │ ├── Listing17.13.RetrievingACustomAttribute.cs
│ │ ├── Listing17.14.ProvidingAnAttributeConstructor.cs
│ │ ├── Listing17.14.ProvidingAnAttributeConstructor.cs~
│ │ ├── Listing17.15.RetrievingASpecificAttributeAndCheckingItsInitialization.cs
│ │ ├── Listing17.16.RetrievingCustomAttributeInstances.cs
│ │ ├── Listing17.17.UpdatingCommandLineHandler.TryParseToHandleAliases.cs
│ │ ├── Listing17.18.RestrictingTheConstructsAnAttributeCanDecorate.cs
│ │ ├── Listing17.19.AttributeUsageAttributeRestrictingWhereToApplyAnAttribute.cs
│ │ ├── Listing17.20.LimitingAnAttributesUsageWithAttributeUsageAttribute.cs
│ │ ├── Listing17.21.UsingANamedParameter.cs
│ │ ├── Listing17.22.UsingFlagsAttribute.cs
│ │ ├── Listing17.23.UsingReflectionWithGenericTypes.cs
│ │ ├── Listing17.24.UsingObsoleteAttribute.cs
│ │ ├── Listing17.25.SavingADocumentUsingSystem.SerializableAttribute.cs
│ │ ├── Listing17.26.ImplementingSystem.Runtime.Serialization.ISerializable.cs
│ │ ├── Listing17.27.BackwardCompatibilityPriorToThe2.0Framework.cs
│ │ ├── Listing17.30.DynamicProgrammingUsingReflection.cs
│ │ ├── Listing17.31.TheCILForAttributesInGeneral.cs
│ │ ├── Listing17.32.TheCILForAttributesInGeneral.cs
│ │ ├── Listing17.33.ImplementingACustomDynamicObject.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter17.Tests
│ │ ├── Chapter17.Tests.csproj
│ │ ├── Listing17.04.LeveragingNameofWithINotifyPropertyChanged.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter18
│ │ ├── 4.0
│ │ │ ├── Listing18.01.StartingMethodInSeparateThread.cs
│ │ │ ├── Listing18.01.StartingMethodInSeparateThread.cs.encrypt
│ │ │ ├── Listing18.02.ReturningAResultFromTask.cs
│ │ │ ├── Listing18.02.ReturningAResultFromTask.cs.encrypt
│ │ │ ├── Listing18.03.RegisteringForNotifactionsWithContinueWith.cs
│ │ │ ├── Listing18.03.RegisteringForNotifactionsWithContinueWith.cs.encrypt
│ │ │ ├── Listing18.05.UnhandledExceptionsUsingContinueWith.cs
│ │ │ ├── Listing18.05.UnhandledExceptionsUsingContinueWith.cs.encrypt
│ │ │ ├── Listing18.06.CancelingATaskUsingCancellationToken.cs
│ │ │ ├── Listing18.08.LoopSynchronouslyCalculatingPiInSections.cs
│ │ │ ├── Listing18.09.StartingMethodInSeparateThread.cs
│ │ │ ├── Listing18.10.ParallelExecutionOfAForeachLoop.cs
│ │ │ ├── Listing18.11.UnhandledExceptionHandlingForParallelIterations.cs
│ │ │ ├── Listing18.12.CancelingAParallelLoop.cs
│ │ │ ├── Listing18.12.CancelingAParallelLoop.cs.encrypt
│ │ │ ├── Listing18.13.LinqSelect.cs
│ │ │ ├── Listing18.13.LinqSelect.cs.encrypt
│ │ │ ├── Listing18.14.ParallelLinqSelect.cs
│ │ │ ├── Listing18.14.ParallelLinqSelect.cs.encrypt
│ │ │ ├── Listing18.15.ParallelLinqWithStandardQueryOperators.cs
│ │ │ ├── Listing18.15.ParallelLinqWithStandardQueryOperators.cs.encrypt
│ │ │ ├── Listing18.16.ParallelLinqWithQueryExpressions.cs
│ │ │ ├── Listing18.16.ParallelLinqWithQueryExpressions.cs.encrypt
│ │ │ ├── Listing18.18.StartingMethodUsingThread.cs
│ │ │ ├── Listing18.18.StartingMethodUsingThread.cs.encrypt
│ │ │ ├── Listing18.19.AynchronousCallsUsingThreadPool.cs
│ │ │ ├── Listing18.19.AynchronousCallsUsingThreadPool.cs.encrypt
│ │ │ ├── Listing18.20.RegisteringForUnhandledExceptions.cs
│ │ │ └── Listing18.20.RegisteringForUnhandledExceptions.cs.encrypt
│ │ ├── Chapter18.csproj
│ │ ├── Chapter18.csproj.encrypt
│ │ ├── Chapter18.csproj.user
│ │ ├── Chapter18.csproj.user.encrypt
│ │ ├── Cryptographer.cs
│ │ ├── Cryptographer.cs.encrypt
│ │ ├── Listing18.01.StartingAMethodThread.cs
│ │ ├── Listing18.01.StartingAMethodThread.cs.encrypt
│ │ ├── Listing18.02.UsingThreadPool.cs
│ │ ├── Listing18.02.UsingThreadPool.cs.encrypt
│ │ ├── Listing18.03.InvokingAnAsynchronousTask.cs
│ │ ├── Listing18.03.InvokingAnAsynchronousTask.cs.encrypt
│ │ ├── Listing18.04.PollingATask.cs
│ │ ├── Listing18.04.PollingATask.cs.encrypt
│ │ ├── Listing18.05.CallingTaskContinueWith.cs
│ │ ├── Listing18.05.CallingTaskContinueWith.cs.encrypt
│ │ ├── Listing18.06.RegisteringForNotificationsWithContinueWith.cs
│ │ ├── Listing18.06.RegisteringForNotificationsWithContinueWith.cs.encrypt
│ │ ├── Listing18.06.RegisteringForNotificationsWithContinueWith.exe
│ │ ├── Listing18.06.RegisteringForNotificationsWithContinueWith.exe.encrypt
│ │ ├── Listing18.07.HandlingATasksUnhandledException.cs
│ │ ├── Listing18.07.HandlingATasksUnhandledException.cs.encrypt
│ │ ├── Listing18.07.HandlingATasksUnhandledException.exe
│ │ ├── Listing18.07.HandlingATasksUnhandledException.exe.encrypt
│ │ ├── Listing18.08.ObservingUnhandledExceptionsWithContinueWith.cs
│ │ ├── Listing18.08.ObservingUnhandledExceptionsWithContinueWith.cs.encrypt
│ │ ├── Listing18.09.RegisteringForUnhandledExceptions.cs
│ │ ├── Listing18.09.RegisteringForUnhandledExceptions.cs.encrypt
│ │ ├── Listing18.10.CancellingTUsingCacellationToken.cs
│ │ ├── Listing18.10.CancellingTUsingCacellationToken.exe
│ │ ├── Listing18.11.UsingTaskRun.cs
│ │ ├── Listing18.12.CooperativeLongRunningTasks.cs
│ │ ├── Listing18.13.SynchronousWebRequest.cs
│ │ ├── Listing18.14.AsynchronousWebRequest.cs
│ │ ├── Listing18.15.AsynchronousWebRequestUsingTaskAsynchronyPattern.cs
│ │ ├── Listing18.16.AsynchronousAsALambda.cs
│ │ ├── Listing18.17.ImplementingCustomAsynchronousMethod.cs
│ │ ├── Listing18.18.CustomMethodWithProgressSupport.cs
│ │ ├── Listing18.19.AwaitStatement.cs
│ │ ├── Listing18.19.AwaitStatement.cs.encrypt
│ │ ├── Listing18.20.CallingTaskContinueWith.cs
│ │ ├── Listing18.20.CallingTaskContinueWith.cs.encrypt
│ │ ├── Listing18.21.SynchronousHighLatencyWPF.cs
│ │ ├── Listing18.21.SynchronousHighLatencyWPF.cs.encrypt
│ │ ├── Listing18.22.AsynchronousHighLatencyWPF.cs
│ │ ├── Listing18.22.AsynchronousHighLatencyWPF.cs.encrypt
│ │ ├── Listing18.23.AwaitsAndControlFlow.cs
│ │ ├── Listing18.23.AwaitsAndControlFlow.cs.encrypt
│ │ ├── Listing18.24.SynchronousPiSections.cs
│ │ ├── Listing18.24.SynchronousPiSections.cs.encrypt
│ │ ├── Listing18.25.ParallelPiCalculation.cs
│ │ ├── Listing18.25.ParallelPiCalculation.cs.encrypt
│ │ ├── Listing18.26.ParallelForeachLoop.cs
│ │ ├── Listing18.26.ParallelForeachLoop.cs.encrypt
│ │ ├── Listing18.27.UnhandledExceptionsParallelIterations.cs
│ │ ├── Listing18.27.UnhandledExceptionsParallelIterations.cs.encrypt
│ │ ├── Listing18.28.CancelingParallelLoop.cs
│ │ ├── Listing18.28.CancelingParallelLoop.cs.encrypt
│ │ ├── Listing18.29.LinqSelect.cs
│ │ ├── Listing18.29.LinqSelect.cs.encrypt
│ │ ├── Listing18.30.ParallelLinqSelect.cs
│ │ ├── Listing18.30.ParallelLinqSelect.cs.encrypt
│ │ ├── Listing18.31.ParallelLinqStandardQueryOperators.cs
│ │ ├── Listing18.31.ParallelLinqStandardQueryOperators.cs.encrypt
│ │ ├── Listing18.32.ParallelLinqQueryExpressions.cs
│ │ ├── Listing18.32.ParallelLinqQueryExpressions.cs.encrypt
│ │ ├── Listing18.33.CancelingParallelLoop.cs
│ │ ├── Listing18.33.CancelingParallelLoop.cs.encrypt
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Utility.cs
│ │ ├── Utility.cs.encrypt
│ │ ├── app.config
│ │ └── app.config.encrypt
│ ├── Chapter18.Tests
│ │ ├── Chapter18.Tests.csproj
│ │ ├── Listing18.05.Test.cs
│ │ ├── Listing18.06.Test.cs
│ │ ├── Listing18.08.Tests.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── Chapter19
│ │ ├── Chapter19.csproj
│ │ ├── Chapter19.csproj.user
│ │ ├── Listing19.01.UnsychronizedState.cs
│ │ ├── Listing19.02.UnsychronizedLocalVariables.cs
│ │ ├── Listing19.03.UnsychronizedLocalVariables.cs
│ │ ├── Listing19.04.SynchonizingWithMonitor.cs
│ │ ├── Listing19.05.SynchronizingUsingLockKeyword.cs
│ │ ├── Listing19.06.SynchronizingUsingInterlocked.cs
│ │ ├── Listing19.07.FiringEventNotification.cs
│ │ ├── Listing19.08.ThreadSafeEventNotification.cs
│ │ ├── Listing19.09.CreatingASingleInstanceApplication.cs
│ │ ├── Listing19.10.WaitingForManualResetEventSlim.cs
│ │ ├── Listing19.11.UsingThreadLocalForThreadLocalStorage.cs
│ │ ├── Listing19.12.UsingThreadStaticAttribute.cs
│ │ ├── Listing19.13.TaskDelayAsTimer.cs
│ │ ├── PiCalculation.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── app.config
│ ├── Chapter20
│ │ ├── Chapter20.csproj
│ │ ├── Listing20.17.ModifyingAnImmutableString.cs
│ │ ├── Listing20.18.ModifyingAnImmutableWithTheIndexOperatorInUnsafeCode.cs
│ │ ├── Listing20.19.DirectlyAccessingAReferentTypesMembers.cs
│ │ ├── Listing20.20.DesignatingABlockForUnsafeCode.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ ├── ChapterAppB
│ │ ├── AppendixB.csproj.vspscc
│ │ ├── ChapterAppB.csproj
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── TicTacToe.cs
│ ├── ChapterAppC
│ │ ├── AppendixC.01.CallingAPMOnWebRequest.cs
│ │ ├── AppendixC.02.InvokingAPMWithCallbackAndState.cs
│ │ ├── AppendixC.03.PassingStateUsigClosureOnAnonymousMethod.cs
│ │ ├── AppendixC.04.UsingTaskToCallAPM.cs
│ │ ├── AppendixC.05.UsingTaskToCallAPMUsingContinueWith.cs
│ │ ├── AppendixC.06.UsingTaskToCallAPMUsingContinueWith.cs
│ │ ├── AppendixC.07.AsynchronousDelegateInvocation.cs
│ │ ├── AppendixC.08.ImplementingEAP.cs
│ │ ├── AppendixC.09.UnhandledExceptionHandling.cs
│ │ ├── AppendixC.10.HandlingUnhandledExceptionsFromTheWorkerThread.cs
│ │ ├── AppendixC.11.AccessingTheUserInterfaceViaInvoke.cs
│ │ ├── AppendixC.12.SafelyInvokingUserInterfaceObjects.cs
│ │ ├── ChapterAppC.csproj
│ │ ├── ChapterAppC.csproj.user
│ │ ├── PiCalculation.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── app.config
│ ├── ChapterAppD
│ │ ├── ChapterAppD.csproj
│ │ ├── ListingD.01.UsingSystemTimersTimer.cs
│ │ ├── ListingD.02.UsingSystemThreadingTimer.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── app.config
│ ├── EssentialCSharp.sln
│ ├── EssentialCSharp.sln.DotSettings
│ ├── IntelliTect.ConsoleView
│ │ ├── IntelliTect.ConsoleView.csproj
│ │ ├── IntelliTect.ConsoleView.csproj.user
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Readme.txt
│ │ └── Tester.cs
│ ├── IntelliTect.ConsoleView.Tests
│ │ ├── IntelliTect.ConsoleView.Tests.csproj
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── TesterTests.cs
│ ├── Modelling
│ │ ├── 13.7.sequencediagram
│ │ ├── 13.7.sequencediagram.layout
│ │ ├── ModelDefinition
│ │ │ └── Modelling.uml
│ │ └── Modelling.modelproj
│ ├── RenumberListings.ps1
│ ├── Shared
│ │ ├── PiCalculator InternalPiDigitCalculator.cs
│ │ ├── PiCalculator.cs
│ │ └── Program.cs
│ ├── enumtest.txt
│ └── enumtest2.txt
├── README.md
├── SetProjectRenameAlias.ps1
└── Utilities
└── ProjectRename
├── LocalTestRun.testrunconfig
├── ProjectRename
│ ├── CommandLine.cs
│ ├── Dnp.dll
│ ├── Dnp.pdb
│ ├── Program.cs
│ ├── ProjectRename.csproj
│ ├── ProjectRename.csproj.vspscc
│ └── Properties
│ └── AssemblyInfo.cs
├── ProjectRename.Test
│ ├── MockProject
│ │ ├── Chapter05
│ │ │ └── Listing5_15-29
│ │ │ ├── Chapter5.Listing5_09-14.csproj
│ │ │ ├── DataStorage.cs
│ │ │ ├── Employee.cs
│ │ │ └── Program.cs
│ │ └── Chapter05.Test
│ │ ├── Listing5_01-06.ProgramTest.cs
│ │ └── Listing5_07-08.ProgramTest.cs
│ ├── ProgramTest.cs
│ ├── ProjectRename.Test.csproj
│ ├── ProjectRename.Test.csproj.vspscc
│ └── Properties
│ └── AssemblyInfo.cs
├── ProjectRename.sln
├── ProjectRename.vsmdi
└── ProjectRename.vssscc
94 directories, 844 files