Lo que pasa es que los estas usando mal. Cuando vas modificar algun valor asi sea dentro de tu clase debes de hacerlo utilizando la propiedad y no directamente asignando la variable con el fin de que se hagan las validaciones del caso, asi que si pruebas a poner tu código de la siguiente manera te daras cuenta que va a quedar igual de funcional que el código del segundo ejemplo.
Código C#:
Ver originalpublic GetYSet2(string nom)
{
this.Nombre = nom;
}
Saludos