Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ссылка на размерный тип? 
:(
    Опции темы
Elfet
Дата 25.6.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



У меня есть класс, который хранит массив векторов (1).
У класса есть функция которая должна возвращать массив других классов (2), которые должны состоять их трех векторов массива (1)
На C++ я бы просто сделал поля другого класса ссылками и ссылался на нужные мне вектора массива (1)
А как такое в C# реализовать? Вектора же у нас только размерные, а не ссылочные. 

Надеюсь понятно описал. Заранее спасибо smile

PS У меня есть массив вектором: Vector[] - это ссылоный тип (?) а мне нужно что бы это был значимый чтобы передать его в функцию: 
Код

void MyFunc(Vector[] vector)

Как делать?


Это сообщение отредактировал(а) Elfet - 25.6.2007, 17:36


--------------------
PM MAIL WWW Skype   Вверх
stab
Дата 25.6.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



в общем, ничего не ясно  smile одно могу сказать точно в C#: вектор = массив = объект = ссылочный тип. или в слово "вектор" ты какой-то другой смысл вкладываешь?

Добавлено через 1 минуту и 6 секунд
.. приведи код на C++, может так проще будет.

Добавлено через 6 минут и 21 секунду
ааа, вспомнил, у тебя Vector это структура. тебе зачем требуется передавать ссылки на него, а не сами значения?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Elfet
Дата 25.6.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Не, вектор у меня размерный - я его сам написал smile

Короче что делать если я хочу ссылаться на размерный тип? smile

Код

Vector v[] = new Vector[9];
.....

class My
{
public:
   Vector * v1;
   Vector * v2;
   Vector * v3;
}

...

my.v1 = &v[0];



--------------------
PM MAIL WWW Skype   Вверх
stab
Дата 25.6.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



либо описать Vector как класс, тогда все проблемы сразу отпадут, либо исппоьзовать unsafe код и работать с указателями. тебе всё таки почему надо именно ссылки? чтобы хранилась ссылка на актуальные данные, а не их копия? или чтобы ускорить работу, не делая лишнее копирование?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Kvazilol
Дата 25.6.2007, 18:29 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



Цитата(Elfet @ 25.6.2007,  17:52)
Не, вектор у меня размерный - я его сам написал smile

Короче что делать если я хочу ссылаться на размерный тип? smile


по умолчанию в C# значимые типы передаются по значению, а тебе надо передать в функцию ссылочку на вектор. значит нужно написать перед вектором ref


Код


 void MyFunc(ref Vector[] vector) 


Добавлено через 1 минуту и 54 секунды
Цитата(cully @ 25.6.2007,  17:58)
 или чтобы ускорить работу, не делая лишнее копирование?

ну конечно

Это сообщение отредактировал(а) Kvazilol - 25.6.2007, 18:29
PM MAIL   Вверх
Elfet
Дата 25.6.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



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


--------------------
PM MAIL WWW Skype   Вверх
stab
Дата 25.6.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Elfet, либо как-то измени логику работы, либо переконвертируй Vector в класс. указатели - зло, придётся держать массивы в pinned состоянии, что очень плохо.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Elfet
Дата 25.6.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Будем логику улучшать smile


--------------------
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0744 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.