From 948c6c15aecfc870915166e6639d8f04d5dd3a70 Mon Sep 17 00:00:00 2001 From: "gu.martinm@gmail.com" Date: Tue, 28 Jan 2014 23:58:05 +0100 Subject: [PATCH] C# In Depth: Chapter 4 --- CSharpInDepth/Chapter4/Chapter4.sln | 20 +++ CSharpInDepth/Chapter4/Chapter4.userprefs | 12 ++ CSharpInDepth/Chapter4/Chapter4/AssemblyInfo.cs | 27 ++++ CSharpInDepth/Chapter4/Chapter4/Chapter4.csproj | 41 ++++++ CSharpInDepth/Chapter4/Chapter4/Main.cs | 155 +++++++++++++++++++++ .../Chapter4/Chapter4/bin/Debug/Chapter4.exe | Bin 0 -> 6144 bytes .../Chapter4/Chapter4/bin/Debug/Chapter4.exe.mdb | Bin 0 -> 1066 bytes ....NETFramework,Version=v4.0.AssemblyAttribute.cs | 2 + .../Debug/Chapter4.csproj.FilesWrittenAbsolute.txt | 5 + .../Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe | Bin 0 -> 6144 bytes .../Chapter4/obj/x86/Debug/Chapter4.exe.mdb | Bin 0 -> 1066 bytes 11 files changed, 262 insertions(+) create mode 100644 CSharpInDepth/Chapter4/Chapter4.sln create mode 100644 CSharpInDepth/Chapter4/Chapter4.userprefs create mode 100644 CSharpInDepth/Chapter4/Chapter4/AssemblyInfo.cs create mode 100644 CSharpInDepth/Chapter4/Chapter4/Chapter4.csproj create mode 100644 CSharpInDepth/Chapter4/Chapter4/Main.cs create mode 100755 CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe create mode 100644 CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe.mdb create mode 100644 CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/.NETFramework,Version=v4.0.AssemblyAttribute.cs create mode 100644 CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.csproj.FilesWrittenAbsolute.txt create mode 100755 CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe create mode 100644 CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe.mdb diff --git a/CSharpInDepth/Chapter4/Chapter4.sln b/CSharpInDepth/Chapter4/Chapter4.sln new file mode 100644 index 0000000..d552b7f --- /dev/null +++ b/CSharpInDepth/Chapter4/Chapter4.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chapter4", "Chapter4\Chapter4.csproj", "{37471E60-2441-47FB-9060-DDEFD1FB9266}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {37471E60-2441-47FB-9060-DDEFD1FB9266}.Debug|x86.ActiveCfg = Debug|x86 + {37471E60-2441-47FB-9060-DDEFD1FB9266}.Debug|x86.Build.0 = Debug|x86 + {37471E60-2441-47FB-9060-DDEFD1FB9266}.Release|x86.ActiveCfg = Release|x86 + {37471E60-2441-47FB-9060-DDEFD1FB9266}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = Chapter4\Chapter4.csproj + EndGlobalSection +EndGlobal diff --git a/CSharpInDepth/Chapter4/Chapter4.userprefs b/CSharpInDepth/Chapter4/Chapter4.userprefs new file mode 100644 index 0000000..6d185f1 --- /dev/null +++ b/CSharpInDepth/Chapter4/Chapter4.userprefs @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharpInDepth/Chapter4/Chapter4/AssemblyInfo.cs b/CSharpInDepth/Chapter4/Chapter4/AssemblyInfo.cs new file mode 100644 index 0000000..044b596 --- /dev/null +++ b/CSharpInDepth/Chapter4/Chapter4/AssemblyInfo.cs @@ -0,0 +1,27 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("Chapter4")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("gustavo")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + diff --git a/CSharpInDepth/Chapter4/Chapter4/Chapter4.csproj b/CSharpInDepth/Chapter4/Chapter4/Chapter4.csproj new file mode 100644 index 0000000..7f5466e --- /dev/null +++ b/CSharpInDepth/Chapter4/Chapter4/Chapter4.csproj @@ -0,0 +1,41 @@ + + + + Debug + x86 + 10.0.0 + 2.0 + {37471E60-2441-47FB-9060-DDEFD1FB9266} + Exe + Chapter4 + Chapter4 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + x86 + true + + + none + true + bin\Release + prompt + 4 + x86 + true + + + + + + + + + + \ No newline at end of file diff --git a/CSharpInDepth/Chapter4/Chapter4/Main.cs b/CSharpInDepth/Chapter4/Chapter4/Main.cs new file mode 100644 index 0000000..6b5d58d --- /dev/null +++ b/CSharpInDepth/Chapter4/Chapter4/Main.cs @@ -0,0 +1,155 @@ +using System; +using System.Text.RegularExpressions; +using System.Runtime.InteropServices; + +namespace Chapter4 +{ + class MainClass + { + public static void Main (string[] args) + { + /** + * Listing 4.1 Using various members of Nullable + * + */ + Console.WriteLine("Listing 4.1 Using various members of Nullable"); + Nullable x = 5; + x = new Nullable(5); + Console.WriteLine("Instance with value:"); + Display(x); + + x = new Nullable(); + Console.WriteLine("Instance without value:"); + Display(x); + + /** + * Listing 4.2 Boxing and unboxing behaviour of nullable types. + * + */ + Console.WriteLine("Listing 4.2 Boxing and unboxing behaviour of nullable types."); + Nullable nullable42 = 5; + + object boxed42 = nullable42; + Console.WriteLine(boxed42.GetType()); + + int normal = (int)boxed42; + Console.WriteLine(normal); + + nullable42 = (Nullable)boxed42; + Console.WriteLine(nullable42); + + nullable42 = new Nullable(); + boxed42 = nullable42; + Console.WriteLine(boxed42 == null); + + nullable42 = (Nullable)boxed42; + Console.WriteLine(nullable42.HasValue); + + /** + * Listing 4.3 The same code as 4.2 but using the ? modifier. + * + */ + Console.WriteLine("Listing 4.3 The same code as 4.2 but using the ? modifier."); + int? nullable43 = 5; + + object boxed43 = nullable43; + Console.WriteLine(boxed43.GetType()); + + int normal43 = (int)boxed43; + Console.WriteLine(normal43); + + nullable43 = (Nullable)boxed43; + Console.WriteLine(nullable43); + + nullable43 = new Nullable(); + boxed43 = nullable43; + Console.WriteLine(boxed43 == null); + + nullable43 = (Nullable)boxed43; + Console.WriteLine(nullable43.HasValue); + + /** + * Listing 4.4 Part of a Person class including calculation of age. + * + */ + Console.WriteLine("Listing 4.4 Part of a Person class including calculation of age."); + Person turing = new Person("Alan Turing ", new DateTime(1912, 6, 23), new DateTime(1954, 6, 7)); + Person knuth = new Person("Donald Knuth ", new DateTime(1938, 1, 10), null); + Console.WriteLine(turing.Age.Days); + Console.WriteLine(knuth.Age.Days); + Console.WriteLine(turing.AgeCoalescing.Days); + Console.WriteLine(knuth.AgeCoalescing.Days); + + /** + * Listing 4.5 An alternative implementation of th TryXXX patern. + * + */ + Console.WriteLine("Listing 4.5 An alternative implementation of th TryXXX patern."); + int? parsed = TryParse("Not valid"); + if (parsed != null) { + Console.WriteLine("Parsed to {0}", parsed.Value); + } else { + Console.WriteLine("Couldn't parse"); + } + } + + static void Display(Nullable x) + { + Console.WriteLine("HasValue: {0}", x.HasValue); + if (x.HasValue) { + Console.WriteLine("Value: {0}", x.Value); + Console.WriteLine("Explicit conversion: {0}", (int)x); + } + Console.WriteLine("GetValueOrDefault(): {0}", x.GetValueOrDefault ()); + Console.WriteLine("GetValueOrDefault(10): {0}", x.GetValueOrDefault (10)); + Console.WriteLine("ToString(): \"{0}\"", x.ToString()); + Console.WriteLine("GetHashCode(): {0}", x.GetHashCode()); + Console.WriteLine(); + } + + class Person + { + DateTime birth; + DateTime? death; + string name; + + public TimeSpan Age + { + get { + if (death == null) { + return DateTime.Now - birth; + } + else { + return death.Value - birth; + } + } + } + + public TimeSpan AgeCoalescing + { + get { + DateTime lastAlive = death ?? DateTime.Now; + return lastAlive - birth; + } + } + + public Person(string name, DateTime birth, DateTime? death) + { + this.birth = birth; + this.death = death; + this.name = name; + } + } + + static int? TryParse(string text) + { + int ret; + if (int.TryParse(text, out ret)) { + return ret; + } + else { + return null; + } + } + } +} diff --git a/CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe b/CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe new file mode 100755 index 0000000000000000000000000000000000000000..4f7a656fc2e670a7b126f7bd37cb3582af071e09 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe.mdb b/CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe.mdb new file mode 100644 index 0000000000000000000000000000000000000000..9fcd31961cff41c80a1e1da16b9b449696fc7d0b GIT binary patch literal 1066 zcmbtTPe>F|82{eRo430*i?Oq@v1yb>p^^hLLx^_B9g|G6bc0~MH0w_8=I-n=yQ|hE z(!@h_2_>zA5M&4jUbLV?r-%;G#R{}zfz%~DB^33&ofSKH>+!zd@Atm%eeci5d!dC} zzw3{0o>jqZrML0kCwR4AGwIb|qaOqCLf5lfj)zBA`^mh8%)%kHr9#gt;C%zV*u z^j&emOxw+ag{uqpnfJ-@p4A`GwcF0qxv!@m`6AoP>-pH|#mRbk9{T=&tM)>{$|f>5 zy6kJYJ+^Fbn3{OE=na3G`t~Bbl9~bH76$K12wC&M2hT?jc&dPmA=;%(#!O@^T?N6L z$cL9%Dsc_GJ~ysw;A6#-leUMzFAm$KVhXBR-gF995MGAtSgjLO`(^M^}4v6*wHzNJ2_K#seHHPJATx*k6O~z{qRHD?!ftG=b!w7EYbW|z__HZiaLsXGzEzYPp zBGK9=2&7<@qOBKqTK8{AAmF2aMk(q)j#q1H=2MD2kLk@WQNj&dZkq7Du?^ zJ~;Lm6E;xeCuCcwpQGUiWKHNefF`0gk +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.0", FrameworkDisplayName = "")] diff --git a/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.csproj.FilesWrittenAbsolute.txt b/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.csproj.FilesWrittenAbsolute.txt new file mode 100644 index 0000000..324bb91 --- /dev/null +++ b/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.csproj.FilesWrittenAbsolute.txt @@ -0,0 +1,5 @@ +/home/gustavo/github/CSharpForFun/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/.NETFramework,Version=v4.0.AssemblyAttribute.cs +/home/gustavo/github/CSharpForFun/CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe.mdb +/home/gustavo/github/CSharpForFun/CSharpInDepth/Chapter4/Chapter4/bin/Debug/Chapter4.exe +/home/gustavo/github/CSharpForFun/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe +/home/gustavo/github/CSharpForFun/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe.mdb diff --git a/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe b/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe new file mode 100755 index 0000000000000000000000000000000000000000..4f7a656fc2e670a7b126f7bd37cb3582af071e09 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe.mdb b/CSharpInDepth/Chapter4/Chapter4/obj/x86/Debug/Chapter4.exe.mdb new file mode 100644 index 0000000000000000000000000000000000000000..9fcd31961cff41c80a1e1da16b9b449696fc7d0b GIT binary patch literal 1066 zcmbtTPe>F|82{eRo430*i?Oq@v1yb>p^^hLLx^_B9g|G6bc0~MH0w_8=I-n=yQ|hE z(!@h_2_>zA5M&4jUbLV?r-%;G#R{}zfz%~DB^33&ofSKH>+!zd@Atm%eeci5d!dC} zzw3{0o>jqZrML0kCwR4AGwIb|qaOqCLf5lfj)zBA`^mh8%)%kHr9#gt;C%zV*u z^j&emOxw+ag{uqpnfJ-@p4A`GwcF0qxv!@m`6AoP>-pH|#mRbk9{T=&tM)>{$|f>5 zy6kJYJ+^Fbn3{OE=na3G`t~Bbl9~bH76$K12wC&M2hT?jc&dPmA=;%(#!O@^T?N6L z$cL9%Dsc_GJ~ysw;A6#-leUMzFAm$KVhXBR-gF995MGAtSgjLO`(^M^}4v6*wHzNJ2_K#seHHPJATx*k6O~z{qRHD?!ftG=b!w7EYbW|z__HZiaLsXGzEzYPp zBGK9=2&7<@qOBKqTK8{AAmF2aMk(q)j#q1H=2MD2kLk@WQNj&dZkq7Du?^ zJ~;Lm6E;xeCuCcwpQGUiWKHNefF`0gk