D 选择D.因为语境说的是那天我到办公室很早,所以后边是因为赶上了七点半的火车.
having done 表示的动作在句子的谓语动词之前.本题中是赶上火车在前,然后到达办公室.
不定式的完成时表示的动作也是在句子的谓语动词之前.但是不定式通常做目的,原因或者是结果状语.那在做题中什么时候用to have done什么时候用have donehave done是现在完成时。to do 做状语的比较常考。to have done做补足语也是常见的。比如做主语补足语:He is said to have studied abroad for three years .