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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы