Для университетского задания меня попросили написать программу, содержащую класс, который находит наибольшее и наименьшее значения некоторого типа данных. Мы также должны удовлетворить следующие требования:
- Использует дженерики с одним отложенным типом с ограничением IComparable‹>;
- Список‹> должен быть создан (приватный), чтобы содержать объекты отложенного типа;
- Должен быть предусмотрен метод Add(), позволяющий добавлять объекты в список‹>;
- Метод Minimum() должен возвращать минимальное значение, хранящееся в списке‹>;
- Метод Maximum() должен возвращать максимальное значение, хранящееся в списке‹>;
- Метод Main() должен демонстрировать использование вашего универсального класса.
Ниже приводится моя жалкая попытка выполнить эту задачу.
Программа.cs:
using System;
using System.Collections.Generic;
namespace task_eleven_point_three
{
class Program
{
static void Main(string[] args)
{
Generics<Type> Test = new Generics<Type>();
Test.Add(3.1232M);
Test.Add(1534);
Test.Add(-74);
Test.Add(432F);
Console.WriteLine(Test.Maximum());
Console.WriteLine(Test.Minimum());
}
}
}
Вот еще один класс, который я назвал Generics.
using System;
using System.Collections.Generic;
namespace task_eleven_point_three
{
class Generics<T>
{
private List<T> _List = new List<T>();
public TYPE Maximum<TYPE>()
where TYPE : IComparable<TYPE>
{
TYPE Result = _List[0];
for (int i = 1; i > _List.Count - 1; i++)
{
if (_List[i].CompareTo(Result) == 1)
Result = _List[i];
}
return Result;
}
public TYPE Minimum<TYPE>()
where TYPE : IComparable<TYPE>
{
TYPE Result = _List[0];
for (int i = 1; i > _List.Count - 1; i++)
{
if (_List[i].CompareTo(Result) == -1)
Result = _List[i];
}
return Result;
}
public void Add(T value)
{
_List.Add(value);
}
}
}
Вот некоторые из ошибок, которые у меня есть в настоящее время:
- Невозможно неявно преобразовать тип "T" в "TYPE"
- «T» не содержит определения для «CompareTo», и не удалось найти метод расширения «CompareTo», принимающий первый аргумент типа «T» (вам не хватает директивы using или ссылки на сборку?)
- Аргументы типа для метода 'task_eleven_point_three.Generics.Maximum()' не могут быть выведены из использования. Попробуйте явно указать аргументы типа.
Я обычно не борюсь с задачами программирования, но дженерики меня действительно смущают. Если бы кто-то мог исправить мой код и сказать мне, что я сделал неправильно, я был бы очень признателен.