have dinner と have a dinner の違い
「have dinner」の意味は「夕食を食べる」です。
一般的な「夕食」という意味の「dinner」は不可算名詞なので「a」は付きません。
不可算名詞なのは「"夕食" という概念的なもの」というイメージだからです。
We usually have dinner at 7.
普段は7時に夕食を食べます。
I’m having dinner.
食事中です。
I'm going to have dinner with my family tonight.
今夜は家族と夕食を食べます。
have a dinner の意味
「dinner」が可算名詞として使われると、「1回の食事」に焦点が当たります。
つまり、普段の夕食ではなく、特別な食事やイベンドなどの場合に「a dinner」が使われる傾向があります。
それに加え、しばしば「誰かと会って食べる」ことを強調するニュアンスが含まれます。
日本語的には会食を指すことも多いです。
また、スケジュール的に決まっている食事に関しては現在形も使われます。
例文
I have a dinner with my boss tonight.
今夜、上司と夕食を食べます。
※「上司と食事」というイベントのイメージ
I have a dinner tomorrow for our 10th anniversary.
明日は結婚10周年のディナーがあります。
We're having a farewell dinner for John tomorrow.
明日、ジョンの送別会があります。
for dinner の意味
「for dinner」の意味は「夕食に」です。
フレーズとしては「have 食べるもの for dinner」の形で「夕食に~を食べる」のパターンがよく使われます。
例文
I'm having pasta for dinner.
夕食にパスタを食べます。
I had a sandwich for dinner.
夕食にサンドイッチを食べました。
What's for dinner?
夕食は何?
This is what’s for dinner tonight.
これが今夜の夕食です。
What did you have for dinner?
夕食は何を食べましたか?
What should we have for dinner tonight?
今夜の夕食は何にしよう?
I hope you can join us for dinner tonight.
今夜ディナーに来てくださればと思うのですが。
(引用:ウィズダム英和辞典 第4版)
have と eat の違い
「have dinner」と「eat dinner」は、意味的には同じです。
そのため、上記の例文を全て「eat dinner / eat a dinner」にしても言っていることは同じになります。
ただし、「have」の方が少しフォーマル感があります。
また、複数人で食べる場合は「have」が使われる傾向があります。
eat = 動作や行為を表す
「eat」は「食べるという動作や行為」に焦点を当てる場合に使われる傾向があります。
I usually eat dinner after my workout.
普段、運動の後に夕食を食べます。
この文は「運動の後に夕食を食べるという行為をする」ことを意味しており、それ以外の情報はあまり関係がありません。
次の例文も同じです。
I eat dinner in front of the TV.
テレビの前で夕食を食べます。
※テレビの前で夕食を食べるという行為に焦点
I ate dinner and then went for a walk.
夕食を食べてから(食べた後に)散歩に行きました。
※「夕食を食べる→歩く」という動作の繋がり
まとめ
・「have dinner」は「夕食を食べる」
・「dinner」は不可算名詞で、「夕食というもの」という概念的なイメージ
・「a dinner(可算名詞)」は「1回の食事」に焦点が当たり、日本語の会食や記念日などの特別な食事を表すイメージ
・しばしば「誰かと会って食べる」ことを強調するニュアンスが含まれる
・「have dinner」と「eat dinner」は意味的には同じ
・「have」の方が少しフォーマル感があり、複数人で食べる場合は「have」が使われる傾向がある
・「eat」は「食べるという動作や行為」に焦点を当てる場合に使われることが多い
ちなみに、この不可算名詞と可算名詞の使い分けは「breakfast / lunch / brunch」も同じように使い分けることが可能です。