.NET 2.0: Notes on Foundation Part 1
Nullable Type
In .NET 2.0, you can declare a variable as Nullable:
Nullable<bool> b = null; // shorthand notation bool? b = null; |
String versus StringBuilder
Strings are immutable in .NET. If you want to combine multiple strings, you can use String class’s Concat, Join, or Format methods or use StringBuilder class.
Arrays
To declare, initialize and sort an array:
// Declare and initialize an array. int[] arr = { 3, 1, 2 }; // Call a shared/static array method. Array.Sort(arr); // Display the result. Console.WriteLine("{0}, {1}, {2}", arr[0], arr[1], arr[2]); |
Try/Catch/Finally Blocks
Use multiple Catch blocks to filter exceptions, ordered from most specific to least specific. Make sure variables you want to access in the Finally block is declared outside of the Try block. You can also use nested Try/Catch/Finally blocks.
Commonly Used Interfaces
IComparable, IDisposable, IConvertible, ICloneable, IEquatable, and IFormattble are commonly used interfaces.
Generics
To declare a generic type:
class Gen<T, U> { public T t; public U u; public Gen(T _t, U _u) { t = _t; u = _u; } } |
To consume a generic type:
// Add two strings using the Gen class Gen<string, string> ga = new Gen<string, string>("Hello, ", "World!"); Console.WriteLine(ga.t + ga.u); // Add a double and an int using the Gen class Gen<double, int> gb = new Gen<double, int>(10.125, 2005); Console.WriteLine(gb.t + gb.u); |
To use a constraint so that you are not limited to just the base Object class:
class CompGen where T : IComparable { public T t1; public T t2; public CompGen(T _t1, T _t2) { t1 = _t1; t2 = _t2; } public T Max() { if (t2.CompareTo(t1) < 0) return t1; else return t2; } }</font></font> |
Besides an interface, you can also use a base class, a constructor or a reference or value type for your constraints.