Класс System::string (Система::Строка)
Класс String (Строка) содержит много полезных методов. Так, для сравнения объектов можно использовать метод Equals (Равняется), что продемонстрировано в следующем примере. Подробнее о методах объекта String (Строка) можно узнать из документации по .NET SDK.
//Strings.срр fusing <mscorlib.dll> using namespace System; // использовать пространство имен Система; void main(void) { String *pstr1 = new String ("hello"); // Строка *pstr1 = новая Строка ("привет"); String *pstr2 = new String("hello"); // Строка *pstr2 = новая Строка ("привет"); if (pstrl › Equals(pstr2)) // если (pstrl › Равняется (pstr2)) Console::WriteLine("equal"); // равны – выполняется else Console::WriteLine("not equal"); // не равный – не // выполняется if (pstrl==pstr2) // если (pstrl == pstr2) Console::WriteLine("equal"); // равны – не выполняется else Console::WriteLine("not equal"); // не равный – выполняется }
Результат работы программы показывает разницу между сравнением объектов String (Строка) с помощью метода Equals (Равняется) и оператора ==. Метод Equals (Равняется) проверяет равенство содержимого объектов, тогда как оператор == проверяет лишь равенство указателей (т.е. равенство адресов объектов в памяти).
Equal not equal
Вот перевод [Добавлен редактором русского перевода. – Прим. ред.]:
равны не равны
Метод ToString обеспечивает представление объекта String (Строка) для любого управляемого типа данных. Хотя метод ToString не является автоматически доступным для неуправляемых классов, он доступен для упакованных значимых и упакованных примитивных типов, таких, как int или float (с плавающей точкой). Упаковка и распаковка, также как значимые типы, управляемые и неуправляемые типы, будут рассмотрены ниже в этой главе.
Метод ToString наиболее часто используется для вывода информации, а также при отладке, и создаваемые управляемые классы обычно заменяют ToString так, чтобы он возвращал определенную разработчиком, удобочитаемую информацию об объекте. Метод Object::ToString просто возвращает полное имя класса данного объекта и его реализация (не особо полезная, впрочем) доступна через наследование любому управляемому типу. Следующий пример демонстрирует некоторые аспекты работы метода ToString:
//ToString.cpp #using <mscorlib.dll> using namespace System; // использовать пространство имен Система; _gc class ClassWithToString // класс сборщика мусора ClassWithToString { public: String *ToString() // отмена { return new String("SomeClass – override"); // возвратить новую Строку ("SomeClass – отмена"); } }; _gc class ClassNoToString // класс сборщика мусора ClassNoToString { //ToString унаследованный, без отмены }; void main(void) { int i = 3; Console::WriteLine(i.ToString()); // перегрузка String* Console::WriteLine(i); // перегрузка int ClassWithToString *psc = new ClassWithToString; Console::WriteLine(psc › ToString()); // перегрузка String* Console::WriteLine(psc); // перегрузка Object* ClassNoToString *psoc = new ClassNoToString; Console::WriteLine(psoc › ToString()); // перегрузка String* Console::WriteLine(psoc); // перегрузка Object* int array _gc[]= new int _gc[5]; // массив сборщика мусора Console::WriteLine(array › ToString()); // перегрузка String // (Строка) Console::WriteLine(array); // перегрузка Object* }