小天:有不有什么办法,实现一次就调用多个构造函数的方法?
老田:有的,这就需要构造函数之间的互访了,换句话说,比如上例,我调用无参数的构造函数来实例化一个对象。而这个无参数的再去调用其他的构造函数,其他的再调用。就这样一环扣一环的下去。如下例
public class Product1 { public int PID; public string PName; public decimal Balance;
public Product1() { this.PID = 1; this.PName = ""; this.Balance = 0.0M; }
public Product1(int fn, string ln) : this(fn, ln, 0.0M) //使用this关键字访问本类中三个参数的构造函数 { //本函数的代码 }
public Product1(int fn, string ln, decimal bal) { this.PID = fn; this.PName = ln; this.Balance = bal; } } |
小天:哦,原来构造函数之间的访问就是使用this关键字。不过怎么好长时间都不做实例了?老给我这些代码,我都不知道咋练习。
老田:(希望正在看书的朋友你千万别学小天)太懒了。你自己不会尝试建立一个应用程序。我给你做一个,但是别指望我告诉你具体的操作步骤。
我们新建了一个项目,做了一个添加商品并预览添加结果的实例。在添加按钮的事件中写如下代码:
private void button1_Click(object sender, EventArgs e) { int fn = Convert.ToInt32(tb_pid.Text); string ln = tb_pname.Text; Product1 p1 = new Product1(fn,ln); //上面赋值完了,下面就开始从对象中取值出来 lbl_pid.Text = p1.PID.ToString(); lbl_pname.Text = p1.PName; lbl_balance.Text = p1.Balance.ToString(); } |
执行后效果如图4-20
图4-20
问题就是上面效果中的那个问题,为什么前面两项的值都是对应的,但是后面价格的值却不不对应呢?如果实在不知道咋回事或者你已经猜到了就打断点,一行行的看下,这个值到底是怎么被贪污掉的。
本文章为天轰穿原创文章,转载请注明出处及作者。