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代码块;
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代码块;