public static bool ReferenceEquals(object
public virtual string ToString() - Возвращает строку, описывающую объект
Класс Tuple
В версии .NET Framework 4.0 внедрен удобный способ создания групп объектов (так называемых кортежей). В основу этого способа положен статический класс Tuple
, в котором определяется несколько вариантов метода Create()
для создания кортежей, а также различные обобщенные классы типа Tuple<. . . >
, в которых инкапсулируются кортежи. В качестве примера ниже приведено объявление варианта метода Create()
, возвращающего кортеж с тремя членами.
public static Tuple
Create
Следует заметить, что данный метод возвращает объект типа Tuple
, в котором инкапсулируются члены кортежа
Интерфейсы IComparable и IComparable
Во многих классах приходится реализовывать интерфейс IComparable
или IComparable
, поскольку он позволяет сравнивать один объект с другим, используя различные методы, определенные в среде .NET Framework. Интерфейсы IComparable
и IComparable
были представлены в главе 18, где они использовались в примерах программ для сравнения двух объектов, определяемых параметрами обобщенного типа. Кроме того, они упоминались при рассмотрении класса Array
ранее в этой главе. Но поскольку эти интерфейсы имеют особое значение и применяются во многих случаях, то ниже приводится их краткое описание.
Интерфейс IComparable
реализуется чрезвычайно просто, потому что он состоит всего лишь из одного метода.
int CompareTo(object obj)
В этом методе значение вызывающего объекта сравнивается со значением объекта, определяемого параметром
Обобщенный вариант интерфейса IComparable
объявляется следующим образом.
public interface IComparable
В данном варианте тип сравниваемых данных передается параметру Т в качестве аргумента типа. В силу этого объявление метода CompareTo()
претерпевает изменения и выглядит так, как показано ниже.
int CompareTo(Т other)
В этом объявлении тип данных, которыми оперирует метод CompareTo()
, может быть указан явным образом. Следовательно, интерфейс IComparable
обеспечивает типовую безопасность. Именно по этой причине он теперь считается более предпочтительным в программировании на С#, чем интерфейс IComparable
.
Интерфейс IEquatable
Интерфейс IEquatable
реализуется в тех классах, где требуется определить порядок сравнения двух объектов на равенство их значений. В этом интерфейсе определен только один метод, Equals()
, объявление которого приведено ниже.
bool Equals(Т other)
Этот метод возвращает логическое значение true
, если значение вызывающего объекта оказывается равным значению другого объекта false
.
Интерфейс IEquatable
реализуется в нескольких классах и структурах среды .NET Framework, включая структуры числовых типов и класс String
. Для реализации интерфейса IEquatable
обычно требуется также переопределять методы Equals(Object)
и GetHashCode()
, определенные в классе Object
.
Интерфейс IConvertible
Интерфейс IConvertible
реализуется в структурах всех типов значений, String
и DateTime
. В нем определяются различные преобразования типов. Реализовывать этот интерфейс в создаваемых пользователем классах, как правило, не требуется.
Интерфейс ICloneable
Реализовав интерфейс ICloneable
, можно создать все условия для копирования объекта. В интерфейсе ICloneable
определен только один метод, Clone()
, объявление которого приведено ниже.
object Clone()