Другие языки программирования и технологии

Зачем нужна перегрузка операторов? Можете написать код для большей усваимости C#

Вообще не нужна. Это синтаксический сахар, без которого подавляющее большинство языков прекрасно обходится.

Перегрузка операций создаёт дополнительные проблемы - и только ради того, чтобы заменить явный вызов функции, назначение которой понятно из её названия, более коротким значком операции, делающей непонятно что.

Например, в векторной алгебре есть несколько видов умножения. Какое именно из них должно обозначаться символом '*'?
ИХ
Игорь Хименко
93 290
Лучший ответ
Для определения операции по оператору над экземплярами классов и структур.
Если он перегружен - он может оперировать над экземплярами или над одним экземпляром, если он унарный.

using System;

namespace ConsoleApp9
{
class Point
{
public int x { set; get; }
public int y { set; get; }
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public Point()
{

}
public static Point operator +(Point p1, Point p2)
{
var p = new Point();
p.x = p1.x + p2.x;
p.y = p1.y + p2.y;
return p;
}
}

class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = (ConsoleColor)0;
Console.Clear();

var po1 = new Point(4, 5);
var po2 = new Point(8, -7);
var po3 = po1 + po2; //Если бы оператор "+" не был перегружен относительно класса Point, то сложить эти экземпляры не получилось бы
Console.WriteLine($"Координаты результирующей точки x {po3.x} y {po3.y}");
Console.ReadKey();
}
}
}
в основном для упрощения кода, вот пример из моей проги, 2 перегрузки оператора умножения для моего класса для работы с матрицами 6x6, первый для перемножение матриц между собой и второй для умножения матрицы на число типа double

static public Matrix operator *(Matrix M, Matrix N)
{
Matrix K = new Matrix();
for (int i = 1; i < 7; i++)
{
for (int j = 1; j < 7; j++)
{
for (int k = 1; k < 7; k++)
K.matrix[i, j] += M.matrix[i, k] * N.matrix[k, j];
}
}
return (K);
}

static public Matrix operator *(Matrix M, double n)
{
Matrix K = new Matrix();
for (int i = 1; i < 7; i++)
{
for (int j = 1; j < 7; j++)
{

K.matrix[i, j] = M.matrix[i, j]*n ;
}
}
return (K);
}