Не получается создать универсальный метод - C#

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

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

Создать интерфейс IOperations, классы Vector2D и Vector3D, которые реализуют этот интерфейс, в которых реализованы методы сложения, вычитания векторов, а также умножение на число. Не получается создать универсальный метод
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    struct Point2D
    {
        public int x;
        public int y;
        public Point2D(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }
 
    struct Point3D
    {
        public int x;
        public int y;
        public int z;
        public Point3D(int x, int y, int z)
        {
            this.x = x;
            this.y = y;
            this.z = z;
        }
    }
    interface IOperations <T>
    {
        T Addition<T>(T vector1, T vector2) where T : Vector2D, Vector3D;
        T Subtraction<T>(T vector1, T vector2) where T : Vector2D, Vector3D;
        T Multiply<T>(int num, T vector) where T : Vector2D, Vector3D;
    }

    class Vector2D : IOperations
    {
 
        public Point2D point1;
        public Point2D point2;
        public Vector2D(Point2D point1, Point2D point2)
        {
            this.point1 = point1;
            this.point2 = point2;
        }
        public T Addition<T>(T vector1, T vector2) where T : Vector2D, Vector3D
        {
            vector1.point2 = new Point2D(vector2.point2.x - vector2.point1.x + vector1.point2.x, vector2.point2.y - vector2.point1.y + vector1.point2.y);
            return vector1;
        }
        public T Substraction<T>(T vector1, T vector2) where T : Vector2D, Vector3D
        {
            vector1.point2 = new Point2D(vector1.point2.x - (vector2.point2.x - vector2.point1.x), vector1.point2.y - (vector2.point2.y - vector2.point1.y)));
            return vector1;
        }
        public T Multiply<T>(int numb, T vector) where T: Vector2D, Vector3D
        {
            Point2D pnt = new Point2D(vector.point2.x - vector.point1.x, vector.point2.y - vector.point1.y);
            vector.point2 = new Point2D(pnt.x * numb, pnt.y * numb);
            return vector;
        }
    }
 
    class Vector3D : IOperations
    {
 
    }

    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

Решение задачи: «Не получается создать универсальный метод»

textual
Листинг программы
    interface IOperations<T>
    {
        T Addition(T vector1, T vector2);
        T Subtraction(T vector1, T vector2);
        T Multiply(int num, T vector);
    }
 
    class Vector2D : IOperations <Vector2D>
    {
 
        public Point2D point1;
        public Point2D point2;
        public Vector2D(Point2D point1, Point2D point2)
        {
            this.point1 = point1;
            this.point2 = point2;
        }
        public Vector2D Addition(Vector2D vector1, Vector2D vector2)
        {
             // а тут - реализация на Ваше усмотрение:
             // return new Vector2D (..., ...);
        }
 
        // остальные методы - аналогично

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


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

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

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