Передача Ссылочных типов значением в C#

кажется, что sum3 var повторно инициализируется в 0 внутри цикла вычислений, плюс проверка равенства по диагональной сумме должна быть вне цикла.

Я бы переработал это следующим образом:

//For Diagonals
sum = 0;
sum3 = 0;
for (row = 0; row < n; row++) {
    sum  += square[row][row];
    sum3 += square[row][n - 1 - row];
}
if (sum == sum3)
    boolean = 1;
else {
    return FALSE;
}

Кстати, я немного упростил вычисление диагонали, так как оно линейное, нет необходимости в 2 вложенных циклах.

Я обнаружил некоторые другие ошибки в финальных проверках:

-0 не должно быть действительным значением

-обращение, а не просто разрыв (существует только внутренний цикл, внешний цикл продолжается)

for (row = 0; row < n; row++) {
    for (col = 0; col < n; col++) {
        if(square[row][col] > n*n || square[row][col] <= 0) {
            return FALSE;
        }
    }
}

//Check for Repeating Numbers
int storedNumbers[n * n];
for (row = 0; row < n; row++) {
    for(col = 0; col < n; col++) {
        storedNumbers[row + n * col] = square[row][col];
    }
}

Затем отсканируйте сохраненные номера на наличие дубликатов. Поиск повторяющихся значений в массиве

ура

22
задан 5 November 2008 в 08:28
поделиться

3 ответа

Эта ссылка должна ответить на ваш вопрос - http://msdn.microsoft.com/en-us/library/s6938f28(VS.80).aspx

0
ответ дан 17 October 2019 в 01:34
поделиться

Нет, нет никакого конструктора копии, эквивалентного в C#. То, что Вы передаете (значением) ссылка .

ICloneable также опасно, так как это плохо определяется, глубоко ли это по сравнению с мелким (плюс он, очень хорошо не поддерживается). Другая опция состоит в том, чтобы использовать сериализацию, но снова, который может быстро подойти к концу намного больше данных, чем Вы предназначили.

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

20
ответ дан 29 November 2019 в 05:21
поделиться

Как уже объяснено, нет никакого эквивалента конструкторам копии C++.

Другая техника состоит в том, чтобы использовать дизайн, где объекты неизменны. Для неизменных объектов нет никакого (семантического) различия между передачей ссылки и копией. Это - путь Система. Строка разработана. Другие системы (особенно функциональные языки) применяют эту технику намного больше.

8
ответ дан 29 November 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: