Как присвоить значение свойству таким образом, чтобы изменилось значение другого элемента?

Знаю, суть вопроса выглядит непонятно. Схожее недопонимание возникло и у меня, когда я прочел вторую часть задачи, с использованием set-аксессора.

Напишите программу, в которой есть класс с целочисленным массивом и целочисленным свойством. При считывании значения свойства оно последовательно и циклично возвращает значения элементов массива. При присваивании значения свойству изменяется значение того элемента, который в данный момент интерпретируется как значение свойства.


Задание я вроде бы как выполнил, но, не уверен в его правильности. В любом случае, хотелось бы узнать, как именно выполнить это условие...

using System;

class MyClass
{
    private int[] nums;
    private int index = 0;

    public MyClass(int[] a)
    {
        nums = a;
    }

    public override string ToString()
    {
        string txt = "{" + nums[0];

        for (int k = 1; k < nums.Length; k++) txt += ", " + nums[k];
        txt += "}";

        return txt;
    }

    public int number
    {
        get
        {
            int res = nums[index];
            index++;

            return res;
        }

        set
        {
            nums[value] = 54;
        }

    }
}
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@Cordiz
Условие простое(почти): есть массив, который мы задаём, и число, которое равно одному из элементов массива. При каждом получении(чтении(get)) этого числа, оно возвращает следующий элемент массива по индексу. Если элемент был в массиве последним, то следующий элемент будет первым в массиве.
А с присвоением(set) всё просто. Присваиваем число тому элементу, который бы вывелся при вызове get.

Если я всё правильно понимаю, то геттер будет таким
get
        {
            int res = nums[index];
            index = index == nums.Length - 1 ? 0 : index + 1; // цикличность

            return res;
        }

а в сеттер такой
set
        {
            nums[index] = value; 
        }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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