你举的例子中 had known 是过去完成时过去式 说的是 如果当时我已经知道了她的号码.而这里的打电话给她相对于我知道她号码的时间是发生在将来的,因此要用将来进行时,但相对于现在的时间是发生在过去的,因此要用would,并且这句话是要假设已经打电话给她了,因此要用完成时.做虚拟语气的题目,就是站在去过的角度上来看发生的事情的前后.
举个例子 If I had study hardly ,I would have pass the test.意思是说:如果之前我好好努力的话(这是对过去的一种假设,其实我没有努力),我就会通过那次考试了(这也是对考试结果的假设,其实是没通过),而考试的时间也是过去的. If you have study hardly ,youwill pass the test.(说话情形可以看成是期末考试前老师跟同学们讲)意思是说:如果你之前努力学习了,那么你会通过这次考试的.这是普通的if语句,老师的假设前提是不知道你努力了没有,而考试也是未发生的.虚拟语气的假设都是已经发生的并且是与事实相反的.其实不是很难的,你多看几个句子,结合现实想想就好了.