Allow Value Type to Be Null
Scenario/Problem: You need to assign null to a value type to indicate the lack of a value. This scenario often occurs when working with databases, which allow any data type to be null.
Solution: This isn't technically something you need to implement in your class. .NET 2.0 introduced the Nullable<T> type, which wraps any value type into something that can be null. It's useful enough that there is a special C# syntax shortcut to do this. The following two lines of code are semantically equivalent:
Nullable<int> _id;int? _id;
Let's make the _id field in our Vertex3d class Nullable<T> to indicate the lack of a valid value. The following code snippet demonstrates how it works:
struct Vertex3d : IFormattable, IEquatable<Vertex3d>, IComparable<Vertex3d>{ private int? _id; public int? Id { get { return _id; } set { _id = value; } } ...}...Vertex3d vn = new Vertex3d(1, 2, 3);vn.Id = 3; //okvn.Id = null; //oktry{ Console.WriteLine("ID: {0}", vn.Id.Value);//throws}catch (InvalidOperationException){ Console.WriteLine("Oops--you can't get a null value!");}if (vn.Id.HasValue){ Console.WriteLine("ID: {0}", vn.Id.Value);}