Я хотел бы определить некоторые операции для List in C#. Например, добавление (+) и транспонирование ('). Однако при компиляции кода возникли ошибки. Я определил класс матрицы, который унаследован от List>. Кроме того, я реализовал оператор «+» и «. Первый из них хорош, но когда я назвал его главным, появляются ошибки. Второй метод не может быть даже скомпилирован. Может ли кто-нибудь помочь? Большое спасибо.Определить оператор для списка в C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace test
{
class Matrix : List<List<double>>
{
public static Matrix operator +(Matrix a, Matrix b)
{
Matrix c = new Matrix();
int i, j;
for (i = 0; i < a.Count; i++)
{
for (j = 0; j < a[1].Count; j++)
{
c[i][j] = a[i][j] + b[i][j];
}
}
return c;
}
public static Matrix operator ' (Matrix a)
{
Matrix b = new Matrix();
int i, j;
for (i = 0; i<a.Count; i++)
{
for (j = 0; j < a[1].Count; j++)
{
b[j][i] = a[j][i];
}
}
return b;
}
public static int Main(string[] args)
{
Matrix x = new Matrix { new List<double> { 1, 2, 5, 2 }, new List<double> { 3, 4, 0, 7 } };
Matrix y = new Matrix { new List<double> { 1, 2, 5, 2 }, new List<double> { 3, 4, 0, 7 } };
Matrix z = new Matrix();
z = x + y;
Console.WriteLine(z);
return 0;
}
}
}
Вы не можете просто выбрать для «перегрузки» любой произвольный символ вы хотите. Нет такого оператора, как '' ' – SimpleVar
Какие ошибки вы получаете? Какова конкретная проблема, с которой вы сталкиваетесь? – Sayse
Ниже приведен список перегрузочных операторов https://msdn.microsoft.com/en-us/library/8edha89s%28VS.71%29.aspx Вот что такое tutorital для операторов перегрузки - https: // msdn .microsoft.com/en-us/library/aa288467% 28v = vs.71% 29.aspx –