应该说与主语人称的搭配没什么讲究,倒是在语义上有差别:
would do / have done 仅表示“就会/ (过去)就会.
should do / have done 表示 “应该会/ (过去)应该会.
也就是说,should 暗含按道理或按事情发生的可能性应该怎么样的意思,而would却没有这样的意思.would可能含有乐意的意思.比较:
If I were you,I would do it.如果我是你,我就会做这件事.
If I were you,I should go there.如果我是你,我应该会去那儿.
If he had had the momen,I would have taken it.如果我有钱,我就会买下它了.
If he had started earlier,he should have completed it.如果他开始得早一些,他应该完成了.
由于should 暗含按道理或常理应该怎么样的意思,所以有时用来批评人,如:
You should have handed it in yesterday!你应该昨天就交了它的!(可事实上你没交.这显然是在责怪对方).
希望我已经讲清楚了.