Generics.
namespace BrackeysGenericsVideo { // video time is 11:14 class Program { static void Main(string[] args) { WriteLine(Utility.CompareValues(1, 2)); // False WriteLine(Utility.CompareValues(5, 5)); // True WriteLine(Utility.CompareValues(5, 5.0)); // False WriteLine(Utility.CompareValues(false,false)); // True WriteLine(""); WriteLine(Utility.CompareTypes(1, 2)); // True WriteLine(Utility.CompareTypes("hello", 2)); // False WriteLine(Utility.CompareValues(5, 5.0)); // False ReadKey(); } // what if you used your custom objects, cow, chicken... } // This method below would be better placed into a // class library with other utilities. public class Utility { // a method that checks if two unknown // types are equal and returns a bool public static bool CompareValues<T1, T2>(T1 value1, T2 value2) { return value1.Equals(value2); } public static bool CompareTypes<T1, T2>(T1 type1, T2 type2) { return typeof(T1).Equals(typeof(T2)); } } }