Сравнение экземпляров 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));