Помощь в написании студенческих работ
Антистрессовый сервис

Перегрузка операторов. 
Компьютерные технологии (программирование на C#)

РефератПомощь в написанииУзнать стоимостьмоей работы

Оператор inst_1a==inst1 вернет false, так как сравнению подвергаются ссылки. Новый метод Equals при сравнении тех же объектов возвращает true. На лицо явное несоответствие — оператор равенства возвращает результат, отличный от метода Equals! То же несоответствие возникает и в отношении оператора неравенства inst_1a≠inst1 (проверьте). Вернемся к коду класса LibClasses._1 в модуле LibCode и добавим… Читать ещё >

Перегрузка операторов. Компьютерные технологии (программирование на C#) (реферат, курсовая, диплом, контрольная)

Проверьте, что последняя редакция кода класса LibClasses._1 в модуле LibCode имеет вид.

namespace LibClasses.

{.

public class _1.

{.

string s="a string" ;

public override bool Equals (object obj).

{.

return obj≠null && GetType ()==obj.GetType () && s == ((_1)obj).s;

}.

public _1(string s).

{.

this.s = s;

}.

public _1().

{.

}.

public void Method ().

{.

System.Console.WriteLine (s);

}.

}.

}.

Вернемся вновь к редакции класса _2 в модуле CodeFile2 сборки MainExe.

Пусть новая редакция кода класса _2 имеет вид.

class _2.

{.

static LibClasses._1 inst1 = new LibClasses._1();

static void Main (string[] args).

{.

LibClasses._1 inst_1a = new LibClasses._1();

System.Console.WriteLine (inst1.Equals (inst_1a));

System.Console.WriteLine (inst_1a==inst1);

System.Console.ReadLine ();

}.

}.

Здесь важна новая строка кода.

System.Console.WriteLine (inst_1a==inst1);

Оператор inst_1a==inst1 вернет false, так как сравнению подвергаются ссылки. Новый метод Equals при сравнении тех же объектов возвращает true. На лицо явное несоответствие — оператор равенства возвращает результат, отличный от метода Equals! То же несоответствие возникает и в отношении оператора неравенства inst_1a≠inst1 (проверьте).

Язык C# позволяет перегружать некоторые стандартные операторы, в частности операторы сравнения == и ≠.

Вернемся к коду класса LibClasses._1 в модуле LibCode и добавим к нему описания перегруженных операторов == и ≠, характерные для класса LibClasses._1 и его наследников.

public static bool operator ==(_1 obj1, _1 obj2).

{.

return Equals (obj1,obj2);

}.

public static bool operator ≠(_1 obj1, _1 obj2).

{.

return !Equals (obj1,obj2);

}.

Любое описание операторов должно содержать модификаторы public static и использовать служебное слово operator. Проверьте работу новой версии кода.

Показать весь текст
Заполнить форму текущей работой