Добрый день!
Хочется унифицировать написание нескольких классов. Если объяснять на кошечках: Принципиально иметь коллекцию объектов. Есть один класс - куб. У него есть метод вычисления объема и несколько свойств. Есть другой класс - цилиндр, у него те же свойства и тот же метод вычисления объема, понятно что реализация отличается. И т.д. Как создать объект класса List чтобы в него могли быть затолканы объекты разных классов? Какой класс указывать при созднии List?
Пока я готовил пример, Вам уже ответили, но на всякий случай добавлю пример
interface IGeometry
{
double VolumeCount();
}
class Sfera : IGeometry
{
double diametr;
public Sfera(double _diametr)
{
diametr = _diametr;
}
public double VolumeCount()
{
return 3.14 * 3 / 4 * diametr * diametr * diametr;
}
}
class Cube : IGeometry
{
double vertexSize;
public Cube(double _size)
{
vertexSize = _size;
}
public double VolumeCount()
{
return vertexSize * vertexSize * vertexSize;
}
}
Соответственно использовать как-то так:
List<IGeometry> lstGeometry = new List<IGeometry>();
lstGeometry.Add(new Cube(20.0));
lstGeometry.Add(new Sfera(10.0));
Можно это решить через интерфейс, всяко это будет лучше чем вариант с List<object>
public interface IHasVolume
{
string Name { get; set; }
double Volume { get; }
}
public class Cube : IHasVolume
{
public double Volume
{
get
{
return 9;
}
}
public string Name { get; set; }
}
public class Cylinder : IHasVolume
{
public double Volume
{
get
{
return 7.4;
}
}
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
//вот используем интерфейс
List<IHasVolume> list = new List<IHasVolume>()
{
new Cube() { Name = "Куб" },
new Cylinder() { Name = "Цилиндр" }
};
list.ForEach(f => Console.WriteLine($"Фигура: {f.Name}={f.Volume}"));
Console.ReadKey();
}
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники