.NET 4.x Как сравнивать и копировать значения полей объектов класса "MyClass" с доступом "private" - C#
Формулировка задачи:
Добрый день!
Изучаю .NET по книге Г.Шилдта "Полное руководство С#". В программировании новичок поэтому прошу ногами сильно не пинать, собственно вопрос в следющем:
Есть вот такая програмка из вышеуказанной книги:
Каким образом мы можем сравнивать и копировать значения полей объектов класса "MyClass", если они имеют модификатор доступа "private", т.е. к ним можно обращаться только в классе. При передаче объекта методу "SameAs" мы напрямую обращаемся к элементу передаваемого объекта "ob.alpha" и "ob.beta"?
З.Ы. Я предполагаю что еще до конца не знаю всех особенностей модификаторов доступа, прошу разъяснить данный момент.
С уважением, Николай Паламарь.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class MyClass
{
int alpha, beta;
public MyClass(int i, int j)
{
alpha = i;
beta = j;
}
public bool SameAs(MyClass ob)
{
if ((ob.alpha == alpha) & (ob.beta == beta))
return true;
else return false;
}
public void Copy(MyClass ob)
{
alpha = ob.alpha;
beta = ob.beta;
}
public void Show()
{
Console.WriteLine("alpha: {0}, beta: {1}", alpha, beta);
}
}
class PassOb
{
static void Main()
{
MyClass ob1 = new MyClass(1, 2);
MyClass ob2 = new MyClass(3, 4);
Console.Write("Ob1: ");
ob1.Show();
Console.Write("Ob2: ");
ob2.Show();
if (ob1.SameAs(ob2))
Console.WriteLine("ob1 равен ob2");
else
Console.WriteLine("ob1 неравен ob2");
Console.WriteLine();
ob1.Copy(ob2);
Console.Write("ob1 после копирования: ");
ob1.Show();
if (ob1.SameAs(ob2))
Console.WriteLine("ob1 равен ob2");
else
Console.WriteLine("ob1 неравен ob2");
Console.WriteLine();
Console.ReadKey();
}
}Решение задачи: «.NET 4.x Как сравнивать и копировать значения полей объектов класса "MyClass" с доступом "private"»
textual
Листинг программы
public bool SameAs(MyClass ob)
{
//передаем сюда объект "ob1" или "ob2", но ведь поля у них private, как получаем доступ?
if ((ob.alpha == alpha) & (ob.beta == beta))
return true;
else return false;
}