C #: хранение ссылки на расположение массива в объекте - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть объект ac #, который устанавливает значения 2 чисел с плавающей запятой.У меня много таких объектов.Я хотел бы хранить эти числа с плавающей запятой в массиве.Таким образом, компоновка будет выглядеть примерно так:

Учитывая массив float: float [] vec = new float [6]

Объект 1 устанавливает значения vec [0] и vec [1]
Объект 2 устанавливает значения vec [2] и vec [3]
Объект 3 устанавливает значения vec [4] и vec [5]

Как сохранить ссылки наобъекты, чтобы они получили доступ к правильному элементу вектора?Я мог хранить индекс, но в старомодном мире c ++ я мог хранить указатель прямо в массиве.

Ответы [ 3 ]

5 голосов
/ 19 апреля 2011

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

http://blogs.msdn.com/b/ericlippert/archive/2011/03/10/references-and-pointers-part-two.aspx

1 голос
/ 19 апреля 2011

C # специально разработан для того, чтобы вы не могли хранить ссылки на элементы массива или другие «некорневые» области памяти в безопасном управляемом коде.Наличие таких ссылок значительно усложнит сборку мусора, и эта возможность в C является известным потенциальным виновником появления неприятных ошибок.Например, вы можете разместить массив в стеке на C и передать ссылку на элемент массива.Если эта ссылка сохраняется после разматывания стека, теперь она указывает на произвольное местоположение, и запись в ссылку может привести к повреждению данных.

0 голосов
/ 19 апреля 2011

Вы можете использовать такую ​​структуру, как PointF:

PointF[] points = new PointF[3];
Console.WriteLine("X:{0}, Y:{0}", points[0].X, points[0].Y);

Или вы можете создать свою собственную структуру:

public struct Vector
{
    public int X;
    public int Y;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...