public static MemoryMetric ToBaseMetric(MemoryMetric metric, out double factor) { switch (metric) { case MemoryMetric.Bit: factor = 1; return(MemoryMetric.Bit); case MemoryMetric.Kilobit: factor = 1E3; return(MemoryMetric.Bit); case MemoryMetric.Megabit: factor = 1E6; return(MemoryMetric.Bit); case MemoryMetric.Gigabit: factor = 1E9; return(MemoryMetric.Bit); case MemoryMetric.Terrabit: factor = 1E12; return(MemoryMetric.Bit); case MemoryMetric.Petabit: factor = 1E15D; return(MemoryMetric.Bit); case MemoryMetric.Byte: factor = 1; return(MemoryMetric.Byte); case MemoryMetric.Kilobyte: factor = 1E3; return(MemoryMetric.Byte); case MemoryMetric.Megabyte: factor = 1E6; return(MemoryMetric.Byte); case MemoryMetric.Gigabyte: factor = 1E9; return(MemoryMetric.Byte); case MemoryMetric.Terrabyte: factor = 1E12; return(MemoryMetric.Byte); case MemoryMetric.PetaByte: factor = 1E15; return(MemoryMetric.Byte); default: throw new NotSupportedException(metric.ToString()); } }