Не получается создать универсальный метод - 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 (..., ...);
- }
- // остальные методы - аналогично
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д