It is possible that the first few instances that your child has had with sharing haven’t been good. Maybe the things she shared were spoiled or broken. Or maybe they haven’t been appreciated well. It is also possible that as a younger child a lot of bigger kids pulled her toys from her hands and there wasn’t much she could do about it. It is also possible that she may fear that she may not get her toys back if she shares them with others.
Often as kids grow bigger, their attachment to their belongings increases. You need to assure her (and make sure) that any toy that she shares will not be spoiled and will eventually come back to her. One way of doing this is being around when kids are playing and gently making sure that all this happens. Organize play dates with individual friends and make sure her playthings are intact. In fact, ask the visiting child to carry a toy and arrange for the kids to play with each other’s toys. When your child goes for a play date ask her to carry a toy as well. Every time she shows progress and lets go of a toy, appreciate her effort. You must make sharing a positive experience for her to continue the behavior.