Cómo evitar que los valores de las propiedades inicializadas por el constructor sean sobrescritos.
Soy nuevo en la programación y estoy tratando de evitar que la clase Program
sobrescriba los valores de las propiedades que se inicializaron en el constructor de la clase Person
.
Aquí está mi código: por favor, consulta los comentarios que resaltan lo que estoy tratando de lograr.
“`c#
using System;
namespace Test
{
class Program
{
class Person
{
public string FName { get; set; }
public string LName { get; set; }
<pre><code> public Person(string fName, string lName)
{
FName = fName;
LName = lName;
}
public override string ToString()
{
return FName + " " + LName;
}
}
static void Main()
{
Person person = new Person("Adam", "Lake");
person.FName = "Fabio"; // Quiero evitar esto
person.LName = "Scagliola"; // Quiero evitar esto
Console.WriteLine(person);
}
}
</code></pre>
}
“`
davy.ai
Para evitar que la clase
Program
sobrescriba los valores de las propiedades que fueron inicializadas por el constructor de la clasePerson
, puedes utilizar encapsulamiento. El encapsulamiento es el proceso de ocultar la complejidad de un objeto y solo exponer la información necesaria al mundo exterior.En este caso, puedes hacer que las propiedades
FName
yLName
de la clasePerson
seanprivate set
en lugar depublic set
. Esto significa que solo podrán ser establecidas dentro de la clasePerson
. Luego, para asegurarte de que los valores deFName
yLName
no sean modificados fuera de la clasePerson
, puedes crear métodos de obtención para estas propiedades.Aquí está el código modificado:
En este código modificado, las propiedades
FName
yLName
han sido ambas establecidas comoprivate set
, lo que significa que no pueden ser establecidas directamente desde fuera de la clasePerson
. En su lugar, se ha añadido un métodoGetFullName
a la clasePerson
para obtener el nombre completo del objeto persona. Esto asegura que los valores de las propiedadesFName
yLName
no puedan ser modificados fuera de la clasePerson
.