夏季到來,酷暑難熬,這時你突然想起來之前壞了的空調(diào)一直還沒找人來修。

You should have had it repaired earlier.

早該讓人來修了對不對?等到熱成狗了才開始著急是不是太晚了點?句中should have done表示“本應(yīng)該做某事”。但事實上本來沒做,所以是個虛擬語氣,類似于should這樣的情態(tài)動詞表示虛擬有好幾種情況:

(1) could have done: 大家知道could是can的過去式,can又是表示“有能力做某事”,所以這個結(jié)構(gòu)表示對過去的虛擬,意思是“本可以做某事(然而并沒有)”。

He could have passed the exam, but he was too careless. 他本可以通過考試的,但他太粗心了。

(2) might have done: 表示對過去事情弱弱地猜測,多用于虛擬語氣(說話人通常沒啥底氣)。

She might have given you much help, though she was busy. 她也許給了你很多幫助,盡管她很忙。

(3) would have done:would用于過去將來時,表示動作的趨向,這個結(jié)構(gòu)表示“本來會做某事”。

I would have went to the hospital, but I felt much better. 我本來會去醫(yī)院的,但我感覺舒服多了。

(4) need have done: 本來需要做某事而沒做,它還有否定形式needn’t have done,表示“本來不需要做某事而做了”。

I need have finished all the task, but he came and helped me. 我本來需要完成所有的任務(wù),但他過來幫我了。

You needn’t cooked so much, only five people came. 你本不需要做那么多菜,只有五個人來吃飯。

(5) should have done: 最后我們再來呼應(yīng)一下開頭,表示“本應(yīng)該做而沒做”,常常是你媽責(zé)備你的時候。同樣也有shouldn’t have done,表示“本不應(yīng)該做某事而做了”。

Tom, you are too lazy. You should have finished your homework yesterday. 湯姆,你太懶啦。你應(yīng)該昨天就完成作業(yè)的。

I shouldn’t have been angry at him. He had no fault. 我不該對他生氣的。他沒有錯。

關(guān)于情態(tài)動詞表虛擬的用法就這么多,都是對于過去的虛擬。就是“XX+ have done”具體的意思就根據(jù)XX去聯(lián)想啦!