should have done必定是虚拟语气吗?为什么?

如果是出于句子本身的时态要求,需要写“完成时”不可以吗?

如讲的是过去的过去的事情时,怎么确定主句中的 should have done 是虚拟语气还是陈述语气呢?毕竟这种情况下两者都可能是 should have done 形态?

Should have done的推测用法

我们可以用should来谈论预期的、意料的事情。此时,should do是对现在或将来的预期,而should have done是对过去事情的推测。请把上面的a句与下面的b句进行比较。

1. b. It was an easy test and he should have passed, but I don’t know for sure.

那个测试很容易,他应该通过了,但我也不确切知道结果。

这里是should have done的推测用法。它与虚拟用法的一个根本不同在于,推测是不知道确切的结果,而虚拟是已经知道结果或事实与预期不符。

再请看其他例句。

2. It should be a nice day tomorrow.

明天应该是个好天气。

3. Try phoning John; he should be home by now.

试着给约翰打个电话,他现在应该在家里。

这里例句2、3中的should be分别表示对将来和现在的推测。下面我们来看should have done对过去事情进行推测的例句。

4. He should have arrived at his office by now. Let’s try ringing him.

他现在应该已经到办公室了,咱们试着给他打个电话。

5. The meeting should have finished by now.

会议现在应该已经结束了。

我们也可以用should not have done来推测过去某事未发生,请看下面两个例句。

6. John shouldn’t have left work yet. I’ll call his office.

约翰现在应该还没有下班,我这就给他办公室打电话。

7. They shouldn’t have sent the report off for printing yet. There is still time to make changes.

他们应该还没有把报告拿去打印,还有时间修改。

从以上例句我们看到,推测用法的should have done不同于虚拟用法,不能译成“本来应该做但实际没有做”;同样,推测用法的shouldn’t have done不能译成“本来不应该做但实际做了”。

should have done的惊讶用法

请把上文例1的a、b两句与下面c句进行比较。

1. c. It was an easy test. I’m surprised that he shouldn’t have passed it.

那个测试很容易,我很惊讶他竟然没有通过。

由此可见,这个句子中的should have done既不是虚拟,也不是推测,而是谈论过去事实,并且表达了“惊讶”的情绪。这是在谈论与预期不符的事实。追问

您好,谢谢您的耐心解答,但您似乎跑题了哦。
本题主要要问的是:
如果是出于句子本身的时态要求,需要写“完成时”不可以吗?

如讲的是过去的过去的事情时,怎么确定主句中的 should have done 是虚拟语气还是陈述语气呢?毕竟这种情况下两者都可能是 should have done 形态?
谢谢。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-11
should have done是虚拟语气,你得这么理解的,“should + 完成时”与虚拟条件连用,表示“与过去事实不符或相反的虚拟语气”。单独一个句子(即:单句),而且含有表示截止到将来某个时间的词语,如:by this time tomorrow, by then, by the end of this week,那么,“should + 完成时”,一般表示推测:“在将来某个时间之前应该业已完成的动作”。 跟if 条件句连用,而且主语是第一人称时,如果if 从句用了过去完成时,“should + 完成时”,一般表示“与过去不符或相反的虚拟语气”。
第2个回答  2021-12-02
是虚拟语气。

理由如下:
should have done本应该做了某事(但实际上没做。)

比如小时候,我本应该好好学习。
I should have studied hard.

希望能帮到您呢!
第3个回答  2021-10-02
最简单最直接的理解是:should have done是should do的过去时,因为should没有过去式,所以用should have done表示。例如:昨天你回来晚了,你应该给我们打个电话:You came back late yesterday.You should have phoned us.
第4个回答  2021-10-01
“should + 完成时”,表示“过去本应该做某事,而实际未做”,属于虚拟语气的一种。
相似回答