How to get rid of conversion overheads?
<p>Take this example:</p>

<pre><code>customer.Salary = Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
</code></pre>

<p>(1) Why in C# we need to always put .ToString() to get it right?</p>

<p>(2) Convert.To...    Doesn't it creates overheads unnecessarily?</p>

<p>Further in the below given code: It gives error: "Input string was not in a correct format", after accepting user input.</p>

<pre><code>    // Main begins program execution.
    public static void Main()
    {
        Customer customer = new Customer();
        // Write to console/get input
        Console.Write("Enter customer's salary: ");
        customer.Salary = Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
        Console.WriteLine("Salary in class variable is: {0}", customer.Salary.ToString()); 
        Console.Read();
    }

    class Customer
    {
        public Decimal Salary { get; set; }
    }
</code></pre>

<p>Here again, either I must use:</p>

<pre><code>string sal =  Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
customer.Salary = Convert.ToDecimal(sal);
</code></pre>

<p>Or, I must change the data type itself in the Customer class.</p>

<p>Can this overhead be avoided with anything in Generics?</p>
