You can search google for a whole host of answers and suppositions.
I think of fields as state and data of the object, while properties are
controlled interaction with the object's state and data.
example: (from here you surmize your own thoughts)
'State and data for our person object
private pstrPersonName as string
private pdteDateOfBirth as date
private pblnIsDirty as boolean
Public Event StateChanged(sender as object, e as system.eventargs)
'Provide information about the object's data with this state flag (Is Dirty)
' we assign it as readonly in this property because we do not
' want consumers to inadvertantly mess it all up.
public readonly property IsDirty as boolean
get
return pblnIsDirty
end get
end property
'Provide controlled access to Date of Birth
' the control is that our person must be within driving age
' (16-71), reject the update if the person is not in that range.
public property DateOfBirth as Date
get
return pdteDateOfBirth
end get
set (value as date)
dim iTemp as integer = datediff("yyyy",value, now)
if itemp >=72 or itemp < 16 then 'Cannot have a driver's license
'throw an exception DateOfBirth is invalid
end if
pdteDateOfBirth = value
pblnIsdirty = true
raiseevent StateChanged(me,new systemeventargs)
end set
end property
'Instruct the object to save it's data and update its state
public sub Save()
if not me.IsDirty then exit sub
'perform save logic
pblnIsDirty = false
raiseevent StateChanged(me,new systemeventargs)
end sub