黑马程序员技术交流社区
标题:
构造函数中的问题。。。纠结好久了。。。求助
[打印本页]
作者:
岳珅
时间:
2013-2-1 20:25
标题:
构造函数中的问题。。。纠结好久了。。。求助
本帖最后由 岳珅 于 2013-2-2 12:07 编辑
题目要求是这样的:
写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值)
不能为负数,有一个价格属性,价格属性只读,并且根据距离计算价格(1元每公里)
0~~~100公里 票价不打折
101~200公里 总额大9.5折
201~300公里 总额打9折
300公里以上 总额打8折
有一个方法,可以显示这张票的信息
代码一开始调试总是错,后来把ShowInfo里面输出的值改成Distance和Price才行,之前用小写的distance和price都不行,用this指向也还是不行- -
namespace 构造函数
{
class Ticket
{
public Ticket(int diastance)
{
this.distance=diastance;
}
private int distance;
public int Distance
{
get {
if (distance < 0)
distance =0;
return distance;
}
}
private double price;
public double Price
{
get
{
if (distance < 100)
price = distance;
else if (distance >= 100 & distance < 200)
price = distance * 0.95;
else if (distance >= 200 && distance < 300)
price = distance * 0.9;
else
price = distance * 0.85;
return price;
}
}
public void ShowInfo()
{
Console.WriteLine("您的票的距离是{0}公里,价格是{1}",Distance,Price);//就是这句不懂。。。。
}
}
}
复制代码
谁能详细解答下。。。ShowInfo里为什么只能用Distance和Price,distance输出也行,是因为Main函数调用时要先给distance赋值。但是price在get中不是也赋值了么?为什么不能输出呢??求解- -真心好纠结。。。
作者:
林其荣
时间:
2013-2-1 22:42
本帖最后由 林其荣 于 2013-2-1 22:56 编辑
楼主的意思是 ShowInfo方法里 用this.price的话 为0是吧?
直接this.price 楼主认为有调用到Price里的get块吗?
所以this.price里的值就是实例成员的初始值
作者:
贾宁
时间:
2013-2-1 22:51
属性中的get和set在编译器中是封装好的两个方法,单纯的用this.price只是将字段中存储的值调用,并没有调用属性的get方法,因此需要用属性名触发get事件{:soso_e125:}
作者:
刘明杰
时间:
2013-2-1 23:18
用小写的不会报错,但是输出值价格是0。 因为你在属性里面进行了判断,属性里才给小写的字符返回值也就是赋值。 你这里直接调用小写的字段,也就是没有进行字段的判断,返回值肯定就是他的初始值0了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2