Операция приведения типов для двумерного массива - C#
Формулировка задачи:
Добрый день. Никак не могу написать рабочий вариант операции приведения типов для двумерного массива.
Вот код.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication12
{
class DoubleMass
{
private int[,] intArray;
private int n;
private int m;
public DoubleMass(int [,] intArray, int n, int m)
{
this.intArray = intArray;
this.n = n;
this.m = m;
}
public void Input()
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
Console.WriteLine("Введите элемент {0} {1}", i, j);
string s = Console.ReadLine();
intArray[i, j] = int.Parse(s);
}
}
}
public void Show()
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
Console.Write("\t {0, 2} ", intArray[i, j]);
}
Console.WriteLine();
}
}
public int Summ(int num)
{
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += intArray[i, num];
}
return sum;
}
public int Zero
{
get
{
int zero = 0;
for (int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if(intArray[i, j] == 0)
{
zero++;
}
}
}
return zero;
}
}
public int Length
{
get
{
return intArray.Length;
}
}
public int MainDeagonal
{
set
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (i == j)
{
intArray[i, j] = value;
}
}
}
}
}
public int this[int i, int j]
{
get
{
if (i < 0 || i >= intArray.Length && j < 0 || j >= intArray.Length)
{
Console.WriteLine("Недопустимый индекс.");
return 0;
}
else
{
return intArray[i, j];
}
}
set
{
intArray[i, j] = value;
}
}
public static DoubleMass operator ++(DoubleMass mas)
{
DoubleMass temp = new DoubleMass(mas.intArray, mas.n, mas.m);
for(int i = 0; i < temp.n; i++)
{
for(int j = 0; j < temp.m; j++)
{
temp[i, j] += 1;
}
}
return temp;
}
public static DoubleMass operator --(DoubleMass mas)
{
DoubleMass temp = new DoubleMass(mas.intArray, mas.n, mas.m);
for (int i = 0; i < temp.n; i++)
{
for (int j = 0; j < temp.m; j++)
{
temp[i, j] -= 1;
}
}
return temp;
}
public static bool operator true(DoubleMass mass)
{
if (mass.m == mass.n)
return true;
else
return false;
}
public static bool operator false(DoubleMass mass)
{
if (mass.m != mass.n)
return false;
else
return true;
}
public static DoubleMass operator +(DoubleMass a, DoubleMass b)
{
if(a.m == b.m && a.n == b.n)
{
DoubleMass temp = new DoubleMass(a.intArray, a.n, a.m);
for(int i =0; i < a.n; i++)
{
for(int j = 0; j < a.m; j++)
{
temp[i, j] = a[i, j] + b[i, j];
}
}
return temp;
}
else
{
Console.WriteLine("Эти массивы невозможно сложить.");
return a;
}
}
// вот этот кусок не работает
/*public static explicit operator int[,] (DoubleMass mass)
{
int[,] temp = new int[mass.n, mass.m];
for (int i = 0; i < mass.n; i++)
{
for (int j = 0; j < mass.m; j++)
{
temp[i, j] = mass[i, j];
}
}
return temp;
}
public static implicit operator DoubleMass(int[,]a)
{
return new DoubleMass(a, n, m);
}*/
}
}Решение задачи: «Операция приведения типов для двумерного массива»
textual
Листинг программы
return new DoubleMass(a, a.GetLength(0), a.GetLength(1));