
have been doing 和 have done 都是现在完成时态,但在用法上有以下区别:have been doing:表示从过去某时开始一直在做某事,强调动作的持续性或重复性。have done:表示过去某时完成了某事,强调动作完成或结束后的状态。例句:I have been studying English for 10 years. (一直在学习,强调持续性)I have done my homework already, so I can go out to play. (已经完成功课,强调动作完成的现状)图片来源:Shutterstock 总结如下:have been doing:表示从过去某时一直在进行某动作,强调动作的持续性或重复性。have done:表示过去某时完成了某动作,强调动作完成后产生的结果或状态。have been doing 表示动作一直在进行,没有完成。have done 表示动作已经完成,产生了一个完成的结果。对比例句:She has been practicing the violin for hours. She must be tired.(一直在练习)She has practiced the violin and can now play quite well.(已经练习,现在可以演奏得不错了)I have been reading the book all afternoon. I'm only halfway through.(一直在读,还没有读完)I have read the book before. It has a very sad ending.(已经读完,知道故事结局)所以当我们想表达一个一直在进行的动作或经常重复的动作时,用have been doing。如果我们想表达某动作已经完成,并强调产生的结果或状态时,用have done 。二者的差别在于动作是否完成以及表达的侧重点不同。弄清二者的区分与用法,有助于在英语表达中表达更加准确。如有不理解之处,请提问,我很乐意进行解释。
