C#属性与字段有关问题

C#属性与字段问题
namespace ClassHomework
{
    class Ticket
    {
        private int distance;
        public int Distance
        {
            get { return distance; }
        }

        private decimal price;
        public decimal Price
        {
            get
            {
                if(distance>=0&&distance<100)
                {
                    price = distance*1.00m;
                }
                else if(distance>=100&&distance<200)
                {
                    price = distance * 0.95m;
                }
                else if(distance>=200&&distance<300)
                {
                    price = distance * 0.90m;
                }
                else
                {
                    price = distance * 0.80m;
                }
                return price;
            }
        }

        public Ticket(int distance)
        {
            if(distance>=0)
            {
                this.distance = distance;
            }
            else
            {
                this.distance = 0;
            }
        }

        public void ShowTicket()
        {
            Console.WriteLine("You will travel {0} kilometers, your ticket price is {1}", distance, price);
        }
    }
}

最后的ShowTicket方法为什么使用字段price输出为0  当使用属性Price的时候才能正确输出?
------解决方案--------------------
http://www.cnblogs.com/yichengbo/archive/2011/07/31/2122916.html

看看
------解决方案--------------------
因为你使用distance, Price这个是属性,这个时候才会执行get代码块,而你的逻辑是放在get代码块的,所以…………

使用distance, price,这个是字段,不无法执行get代码块;