Екатерина
Екатерина

Перегрузка операторов C#

Создал свой класс матриц, для сложения матриц между собой перегрузил оператор сложения
public static Matrix operator +(Matrix m1, Matrix m2)
{

if(m1.matrix.GetLength(0)!=m2.matrix.GetLength(0)||m1.matrix.GetLength(1)!=m2.matrix.GetLength(1)){ return m1;}
else
{
int Lx = m1.matrix.GetLength(0);
int Ly = m1.matrix.GetLength(1);
Matrix tmp = new Matrix(m1.matrix.GetLength(0), m1.matrix.GetLength(1));
for (int y = 0; y < Ly; y++)
{
for (int x = 0; x < Lx; x++)
{
tmp.matrix[x, y] = m1.matrix[x, y] + m2.matrix[x, y];
}
}
return tmp;
}

}

между собой матрицы прекрасно складываются. а как перегрузить этот оператор по отношению например к типу int,double,float и т. д.
например что бы сложить матрицу с числом?

и кстати да, матрицу нельзя сложить с числом, но все равно решение перегрузки я нашел, всего лишь тип первого объекта нужно изменить и все, подойдет для умножения на число

СБ
Светлана Бадреева

Можно использовать для разных типов обработку исключений try - catch и там парсить входные данные, чтобы матрицы были однотипными, чтобы их размеры совпадали.

СВ
Сергей Винс

напиши метод, который принимает число и складывает с обйектом матрицы.

Nefillim
Nefillim

public class Matrix
{
public static Matrix operator + (Matrix m1, Matrix m2)
{ return null;}

public static Matrix operator + (Matrix m1, int i)
{ return null;}
};

Просто указываете подряд еще один оператор перегрузки. Операторы не могут отличатся только по возвращаемомому значению и еще какие-то там ограничения.

Похожие вопросы
Перегрузка оператора c++
Перегрузка операторов C++
Как осуществить перегрузку оператора * в C++?
Вопрос по с++ ( Перегрузка операторов в классах)
перегрузка оператора присваивания:
Помогите с условными операторами C#
Перегрузка операторов
Перегрузка операторов 2
C++. Перегрузка операторов.
Оператор C# Объясните доступным языком пожалуйста что значит оператор ^=