K.M.
Like the other posters said, it's not so much that he's purposefully being naughty, he's just being 3. Here are some strategies I've used with my kids:
1. Focus on "taking turns" rather than sharing. I think sharing is a tough concept to understand whereas taking turns is more concrete. You can practice at home. If he snatches something away from you, take it back and have him ask properly. Make sure you are modeling the proper way to ask for something from somebody.
2. Discuss acceptable behavior before you go. If you are going on a playdate, on the way over remind him how we need to ask for a turn and wait for the toy to be given. Ask him questions about how to behave and wait for him to answer. Ex: Son, how do we ask for a turn? Or, "Is it polite to grab someone's toy from them?" "What happens if someone doesn't want to share?"
3. I don't think 3 is too young for consequences. If you're some place that he keeps taking toys and not listening, it's ok to leave and try again another day. You can be matter of fact about it. When you're discussing the appropriate way to share toys on the way to where ever you're going, make sure he knows that if he doesn't listen and keeps taking toys without asking, you'll have to go home. So one of your questions to him could be, "What happens when we keep taking toys from our friends?" If he continues to take toys even after being reminded that you'll have to leave if he doesn't stop, then be sure to follow through. Tell him you can see he is having a hard time sharing today and since it is making him and his friends sad, it's time to take a break and try another day. You can empathize and follow through without getting mean.
I know it will suck for you especially if you're socializing with other moms and you have to go home early, but a couple times of leaving early will make more of an impact than spending all your visits policing him and getting frustrated.