Сравнение экземпляров String через Equals - C#
Формулировка задачи:
Здравствуйте!
Подскажите пожалуйста, мне в программе необходимо реализовать свой собственный метод получения типа элемента, посланного в прототип класса. Я это делаю в методе при помощи Equals.
Т.е. в классе у нас есть статический приватный параметр нашего TYPE, который нужен, в данный момент, лишь для того, чтобы узнать его тип через отдельно написанный метод.
В данный момент, я сравниваю TYPE с Int32, bool, long, double, и String. Но проблема возникает именно при последнем типе. Т.е. если я пошлю String-тогда вернётся UNKNOW, т.е. не был определён тип.
Подскажите пожалуйста-где у меня допущена ошибка?
Вроде бы всё верно сделал...
т.е. я создаю временный экземпляр String(new Char[] {'q'}).Equals(TYPE OBJECT), но сравнение возвращает false, даже если я сделаю MyClass<String>... По идеи-в TYPE будет String, однако, почему то, сравнение не возвращает правильного результата(Equals не изменял, он остался по умолчанию)...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _C_Sharp__Классы_интерфейсы_прототипы { class Program { class MyCLass<TYPE> { private static TYPE MainData; public String GetType() { String str = "ThisIsString"; try { if (new Int32().Equals(MainData)) return "Integer"; else if (new String(new Char[] {'h', 'e', 'l', 'l', 'o', '_', 'w', 'o', 'r', 'l', 'd', '_', '!'}).Equals(MainData)) return "String"; else if (new bool().Equals(MainData)) return "Boolean"; else if (new double().Equals(MainData)) return "Double"; else if (new long().Equals(MainData)) return "Long Integer"; } catch (Exception error) { Console.WriteLine(error.Message.ToString()); } return "UNKNOW"; } } static void Main(string[] args) { Console.WriteLine((new MyCLass<Int32>()).GetType()); Console.WriteLine((new MyCLass<String>()).GetType()); Console.WriteLine((new MyCLass<bool>()).GetType()); Console.WriteLine((new MyCLass<double>()).GetType()); Console.WriteLine((new MyCLass<long>()).GetType()); Console.ReadKey(); } } }public String GetType() { String str = "ThisIsString"; try { if (new Int32().Equals(MainData)) return "Integer"; else if (new String(new Char[] {'h', 'e', 'l', 'l', 'o', '_', 'w', 'o', 'r', 'l', 'd', '_', '!'}).Equals(MainData)) return "String"; else if (new bool().Equals(MainData)) return "Boolean"; else if (new double().Equals(MainData)) return "Double"; else if (new long().Equals(MainData)) return "Long Integer"; } catch (Exception error) { Console.WriteLine(error.Message.ToString()); } return "UNKNOW"; }
Решение задачи: «Сравнение экземпляров String через Equals»
textual
Листинг программы
char[] arr1 = new char[1]; object a = new string(arr1); char[] arr2 = new char[1]; object b = new string(arr2); Console.WriteLine(ReferenceEquals(a, b));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д