Написание класса Point в стили Generic - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите разобраться почему не работает метод Distance так как нужно!!!
using System;
 
namespace Geometry
{
    public abstract class Point<T> : IPoint<T>
    {
        public abstract T X { get; set; }
 
        public abstract T Y { get; set; }
 
        public T Z { get; set; }
 
        public abstract void Show();
 
        public abstract T GetDistance<T1>(two);
    }
}
 
namespace Geometry
{
    interface IPoint<T>
    {
        T Z { get; set; }
    }
}
 
using System;
 
namespace Geometry
{
    class Point2D<T> : Point<T>
    {
        protected T x;
        protected T y;
 
        public override T X
        {
            get => x;
            set => x = value;
        }
        public override T Y
        {
            get => y;
            set => y = value;
        }
 
        public Point2D() { }
 
        public Point2D(T x, T y)
        {
            this.x = x;
            this.y = y;
        }
        public override void Show() => Console.WriteLine($"({x}, {y})");
 
        public T GetDistance<T1>(Point2D<T1> two)
        {
            return (T)(Object)Math.Sqrt(Math.Pow(this.X - two.X, 2) + Math.Pow(this.Y - two.Y, 2));
        }
    }
}
 
using System;
 
namespace Geometry
{
    class Point3D<T> : Point2D<T>, IPoint<T>
    {
        protected T z;
 
        public new T Z
        {
            get => z;
            set => z = value;
        }
 
        public Point3D() { }
 
        public Point3D(T x, T y) : base(x, y) { }
 
        public Point3D(T x, T y, T z) : base(x, y) => this.z = z;
 
        public override void Show() => Console.WriteLine($"({x}, {y}, {z})");
 
        public override T GetDistance(Point<T> two)
        {
            return Math.Sqrt(Math.Pow(X - two.x, 2) + Math.Pow(this.Y - two.Y, 2) + Math.Pow(this.Z - two.Z, 2));
        }
    }
}

Решение задачи: «Написание класса Point в стили Generic»

textual
Листинг программы
        protected Func<T, T, T> add = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Add); // c = a + b
        protected Func<T, T, T> sub = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Subtract); // c = a - b
        protected Func<T, T, T> pow2 = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Multiply); // c = a * b
        //protected Func<T, T, T> pow = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Power); // c = Math.Pow(a, b)

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


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

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

13   голосов , оценка 4.231 из 5