would have enjoyed 是虚拟中的一个结构,结构是“从句if+had done,主句would have done"表示对已发生的事情的虚拟,shouldn`t have enjoyed、 needn`t have enjoyed、 can`t have enjoyed是表猜测性的, 分别的意思是”本应该做却没有做”“没有必要做却做了” 和“不可能……”按照题目的意思,的确是选D
如果对这些不太清楚 可以买一本比较正规的语法书 里面会有详细的解释 如果你年级不是很高的话 老师以后的课程里会提到的 不用着急