use property when some er.. property is fast-performing (e.g. ctrl.Color, ctrl.Text, ctrl.Width, DateTime.Now). but if it signifies a process, use method (e.g. str.GetHash(), machine.GetFqdn(), file.GetMd5()). so in file md5, you will not make it a property
this emphasize it the most when to use a method:
The operation is expensive enough that
you want to communicate to the user
that they should consider caching the
result.
do note that .NET's DateTime.Now, though fast as it is and a property, it needed be cached when it is called multiple times in your program, even near each other. they decided to make it a property, property has a feel of currentness in it, unlike when you call a method, it doesn't have a feel of instantness/currentness in it. so you need to take into account that even when you get a value and needed be cached, but if it needs to feel instant, by all means use property.
after all, if something is really fast and doesn't feel like an expensive operation, it has to have a construct that can convey its fastness. i think this is why .NET is attractive (or any language that has property construct), it doesn't force developers to use method when you can make it a property, it doesn't force developers to use method when you can make a performant code around overloaded operators, this is pragmatic programming at its best