once you ____ a promise,you must carry it out.one you ___ a promise,you must carry it out.A.have made B.had made C.made D.is making但是按照主将从现得原则,应该选C才对啊,they can't leave until they have done their work.这句话中的have done是不是也要根据主将从西现得原则改为finish或者do呢?

问题描述:

once you ____ a promise,you must carry it out.
one you ___ a promise,you must carry it out.
A.have made B.had made C.made D.is making
但是按照主将从现得原则,应该选C才对啊,
they can't leave until they have done their work.
这句话中的have done是不是也要根据主将从西现得原则改为finish或者do呢?

这是一个虚拟语气,所以要用完成时,你并没有现在作出承诺,但是如果你做了,你就要遵守。
补充问题的答案是:是的,要换成一般现在时,因为until后面的一般现在时可表示将来。
最后告诉LZ,不要太拘泥与所谓的语法规则,除非你是要考试或者作学问出书,不然实际运用才是王道,多读多听,这些题目你不用想就知道答案,因为你平时就是这么说,这么听到的。

一旦你承诺了,你一定要执行。
当然应该选A,因为承诺了但也许执行了也许还没有执行,表示这是一个发生在过去并与现在有关联的动作,所以用现在完成时(have/had+现在分词)。而后半天只是一个祈使句,并无时态的表示。

once you have made a promise, you must carry it out.
完成时有对现在的影响,一旦你已经做出
这也不是主将从现