Элементы данных класса C# (поля или свойства) могут быть частными или общедоступными или защищены.Доступ к классам C#
Что делать, если я хочу, чтобы частное поле для методов членов использовалось только и не отображалось во внешнем мире?
Я могу продолжать использовать личное поле, не нарушая инкапсуляции или что-то в этом роде?
То, что я не понимая это два понятия: данные, которые мы, возможно, придется подвергать внешнему миру против данных мы не можем нужно сделать так (на периферии класса) ..
Каковы эти два типа данных, говоря о построении класса?
В приведенном ниже примере частное поле «имя» является приватным для класса, но по-прежнему получает/настраивает внешний/внешний мир. Является ли абстракция здесь, чтобы «прямо не выставлять напоказ, как здесь, вы идете на нее», а добавить косвенный механизм доступа или обновления? Это инкапсуляция, о которой мы говорим здесь, когда говорим о публичных полях и публичных свойствах?
class Employee2
{
private string name = "Harry Potter";
private double salary = 100.0;
public string GetName()
{
return name;
}
public void SetName(string title, string fullName)
{
this.name = title + fullName;
}
public double Salary
{
get { return salary; }
}
}
class PrivateTest
{
static void Main()
{
Employee2 e = new Employee2();
// The data members are inaccessible (private), so
// they can't be accessed like this:
// string n = e.name;
// double s = e.salary;
// 'name' is indirectly accessed via method:
string n = e.GetName();
// 'salary' is indirectly accessed via property
double s = e.Salary;
}
}
методы Почему вы используете, а не собственность для 'Name', и почему ваш сеттер ничего не установил? Это очень странный образец. –
Спасибо, Джон за вопрос. Я на самом деле схватил пример отсюда: http://msdn.microsoft.com/en-us/library/st6sy9xe.aspx – Athapali
Я предлагаю вам прочитать инкапсуляцию в Википедии [link] (http://en.wikipedia.org/wiki/Encapsulation_ (object-oriented_programming)) – Tombala