DWhy didn't you buy it是过去时态排除Amust have 有推测有含义should have 表示“过去本来应该但是没有做的事”would是在过去的一个时间点的将来式,相比较而言,D更能表达回答的意思
D
D.should have 表示“过去本来应该但是没有做的事”。
Dshould have翻译:我本来应该买的should have done 本来应该做而没有做的事情