would do和would have done在虚拟语气中的区别


【问】

If I hadn’t been faced with so many barriers, I ____ where I am.(2020高考江苏卷)

A. wouldn’t have been   B. wouldn’t be

答案:B

本题是虚拟语气,搭配hadn’t been为什么不用wouldn’t have been?

【答】

虚拟语气中,从句用过去完成时(had done)搭配主句的过去将来完成时(would have done),是因为从句和主句都在表达“过去”。如:[loginview]

  • If I saw him yesterday, I would have told him the truth. 如果我昨天见了他,(昨天)我就告诉他真相了。

本句的if从句表达的是“过去”,所以用过去完成时,但主句表达的是“现在”——从where I am可知——所以不再用过去将来完成时而用过去将来时表达虚拟语气,即B项。再如:

  • If I had taken his advice two years ago, I would be a doctor now. 如果两年前我听了他的建议,我现在就是一名医生了。

本题的特点是从句和主句的时间不同,应分别判断时态。[/loginview]