Доступ через свойство - C#
Формулировка задачи:
Имеется кусок кода из класса:
Как видно из кода, в данном классе имеется закрытое поле массив ins, к нему осуществляется доступ через свойство. Но значения данного массива задаются в методе input этого же класса, путем его вызова из другого класса и передачей ему массива значений, из-за этого значения не фильтруются, т.е. операторы if ветви set в данной ситуации свое предназначение не выполняют, т.к. по определению методы класса имеют доступ к закрытым полям класса.
Мне нужно, чтобы при вызове object.input(1,0,1,0,1), происходила проверка передаваемых значений( только 0 и 1) и чтобы эта проверка проходила с помощью свойства(мб нужно задать какие-то спецификаторы или атрибуты метода или свойства). Возможно ли это?
И второй вопрос. У меня имеется класс(не абстрактный) предок и его потомок. В потомке, помимо унаследованных методов, имеется новый метод, и в мэйне имеется строка
Предок f= new Потомок();
f.новый метод();
Естественно тут выдаст ошибку, так как новый метод в классе предка вообще не определен, а переменная f имеет тип предка. Но мб есть какой-нибудь способ корректного выполнения этого кода без определения этого метода в классе предка ?
public int this[int i] { get { if (i >= 0 && i < ins.Length) return ins[i]; else throw new Exception("ERROR RANGE"); } set { if (i >= 0 && i < ins.Length && value >= 0 && value <= 1) ins[i] = value; else throw new Exception("ERROR VALUE OF SIGNAL"); } } public void input(params int[] arr) // связать со свойством метода предка { ins = new int[Nins]; for (int i = 0; i < Nins; i++) { ins[i] = arr[i]; } } int[] ins;
Решение задачи: «Доступ через свойство»
textual
Листинг программы
using System; using System.Linq; internal class Test { public static void Main() { //input(1, 0); input(1, 5); } public static void input(params int[] arr) // связать со свойством метода предка { if (arr.Any(n => n != 0 && n != 1)) { throw new ArgumentException("Number must be 1 or 0", "arr"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д