Иллюстрированный самоучитель по Visual Basic .NET

Equals и ReferenceEquals. Метод ToString.

В классе Object поддерживаются две версии Equals – общая и обычная. Общая версия имеет следующий синтаксис:

Overloads Public Shared Function Equals(0bject. Object) As Boolean

Пример использования:

Equals(a .b)

Синтаксис обычной версии:

Overloads Over-ridable Public Function Equals(Object) As Boolean

Пример использования:

a.Equals(b)

Обе версии метода Equals проверяют, обладают ли два объекта одинаковыми данными, но вы должны быть готовы переопределить Equals, если этого требует специфика вашего класса. Не забывайте, что общие члены класса не переопределяются, поэтому переопределение допускается лишь для обычной (не общей) версии Equals.

Например, если в вашей программе предусмотрены два способа представления некоторого структурного типа, позаботьтесь о том, чтобы это обстоятельство учитывалось методом Equals (именно так разработчики VB.NET поступили с классом String, хотя, строго говоря, этот класс не относится к структурным типам).

В классе Object также предусмотрен общий (и потому не переопределяемый) метод ReferenceEquals. Метод ReferenceEquals проверяет, представляют ли две переменные один экземпляр. Например, как показывает следующий фрагмент, для двух строк а и b выражение a.Equals(b) может быть истинным, а выражение Reference-Equals (a .b) – ложным:

Sub Main()
Dim a As String = "hello"
Dim b As String = "Hello"
Mid(b.l.D= "h"
Console.Writeline("Is a.Equals(b)true?" & a.Equals(b))
Console.WriteLine("Is ReferenceEquals(a.b)true?" & _
ReferenceEquals(a.b))
Console. ReadLine()
End Sub

Результат показан на рис. 5.4.

Иллюстрированный самоучитель по Visual Basic .NET › Наследование и интерфейсы › Equals и ReferenceEquals. Метод ToString.
Рис. 5.4. Различия между методами Equals и ReferenceEquals

Метод ToString

Метод ToString возвращает представление текущего объекта в строковом формате. Вопрос о том, будет ли это представление удобным при отладке и для пользователей, зависит от реализации класса. По умолчанию ToString возвращает полное имя типа для заданного объекта – например, System.Object или Examplel.Programmer.

Постарайтесь привыкнуть к переопределению ToStnng в ваших классах, чтобы этот метод возвращал более содержательное строковое представление класса. Например, в классе Employee из программы EmployeeTest1, приведенной в главе 4, метод ToString может выглядеть примерно так:

Public Overrides Function ToString() As String
Dim temp As String
temp = Me.GetType.ToString()& "my name is " & Me.TheName
Return temp
End Function

Примерный результат:

EmployeeTestl+EmployeeTestl+Employee my name is Tom
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.