Onde trabalho, o uso de Propriedades é desencorajado. Temos ferramentas de geração de código para "acelerar as coisas". Todos os dados do objeto acabam sendo campos públicos. Se você solicitar propriedades de qualquer maneira, obterá algo como isto:
Public sFoo as String
Public Property Foo as String
Get
Return sFoo
End Get
Set(ByVal value as String)
sFoo = value
End Set
End Property
Não consigo pensar em um argumento razoável para fazer isso. Existem boas razões para usar uma propriedade pública com um campo público?