OutOfRangeExeption в перегрузке оператора

220
24 ноября 2017, 04:21

Здравтсвуйте, не получается отловить исключение. Когда использую оператор неявного приведения в строку - выбрасывает исключение. Вот код, помогите чем сможете:

public class BoolMatrix
{
    private bool[,] matrix;
    public bool this[int a, int b]
    {
        get
        {
            return matrix[a, b];
        }
        set
        {
            if (value)
                Count++;
            matrix[a, b] = value;
        }
    }
    public BoolMatrix(int width, int heigth)
    {
        matrix = new bool[width, heigth];
        Length = width*heigth;
        Heigth = heigth;
        Width = width;
        Count = 0;
    }
    static public implicit operator string(BoolMatrix a)
    {
        string s = "";
        for (int i = 0; i < a.Width; i++)
        {
            for (int j = 0; j < a.Heigth; j++)
            {
                s += a[i, j] + " ";
            }
            s += '\n';
        }
        return s;
    }
}

Это был библиотечный класс, а теперь сам вызов оператора:

string s = new BoolMatrix(9, 6);

Кстати, если задать одинаковое кол-во строк и столбцов - работает как часы.

Answer 1

Тут у вас ширина - высота.

matrix = new bool[width, heigth];

А в цикле прогоняете сначала по Height, а нужно, как понимаю, по Width вот так:

for (int i = 0; i < a.Width; i++)
    {
        for (int j = 0; j < a.Heigth; j++)
        {
            s += a[i, j] + " ";
        }
        s += '\n';
    }
READ ALSO
C# MVVM взаимодействие моделей

C# MVVM взаимодействие моделей

Как по паттерну MVVM модели могут обмениваться информацией друг с другом?? Я читал, что с случае с view-model необходимо ставить MVVM Light Toolkit и юзать...

241
Добавление роли пользователю ASP.NET Identity

Добавление роли пользователю ASP.NET Identity

При регистрации в AccountController пытаюсь добавить роль пользователю, однако вылетает такая ошибка (картинка снизу)Делал по примеру и как там заявлено,...

325
Конвертация синтаксиса кода

Конвертация синтаксиса кода

Есть задача объединить исходники библиотеки в один файл и при этом преобразовать код, написанный на C# 70 в C# 4

215
Почему-то не работает log4net на другой машине

Почему-то не работает log4net на другой машине

В общем, на моей машине(Win 7) логи нормально пишутся, запускаю программу на другой(Win Server 2003) машине, а там пишется вот такая шляпа:

253