Есть некоторый класс, содержащий массив с координатами в виде закрытого поля, и абстрактный класс для создания расширений:
public class Simulator
{
private Vector3[] _pos;
public abstract class Extension
{
protected Simulator Simulator { get; set; }
protected Extension(Simulator simulator)
{
Simulator = simulator;
}
...
}
...
}
Как получить быстрый и безопасный доступ к элементам массива _pos
(с возможностью изменений) из расширений?
Как я понял из статьи возврат массива не является корректным выходом в данной ситуации.
Добавляем функцию (или свойство, как вам нравится) в класс-расширение
public class Simulator
{
private Vector3[] _pos;
public abstract class Extension
{
protected Simulator Simulator { get; set; }
protected Extension(Simulator simulator)
{
Simulator = simulator;
}
protected Vector3[] GetPos()
{
return Simulator?._pos;
}
}
}
Используем её в наследниках
public class Extension1 : Simulator.Extension
{
public Extension1(Simulator simulator) : base(simulator)
{
}
private void Foo()
{
var pos = GetPos();
pos[0] = new Vector3();
}
}
Если вам надо вернуть копию массива
protected Vector3[] GetPos()
{
if (Simulator?._pos == null) return null;
var copy = new Vector3[Simulator._pos.Length]
Array.Copy(Simulator._pos,copy, Simulator._pos.Length);
return copy;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Раньше у меня хостинг бы в Москве, в моей временной зоне, и сайт работал как ожидалосьСейчас переезжаем на новый хостинг (SmarterAsp, Shared) у которого...
Когда я пытаюсь добавить или прочитать значение в sessionStorage у меня вылезает ошибка "NodeInvocationException: sessionStorage is not defined ReferenceError: sessionStorage is not defined...