Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для Ezingrin
2 / 2 / 0
Регистрация: 24.07.2012
Сообщений: 69

Указатели или "как сделать так, чтобы две переменные обращались к одному участку памяти?"

07.03.2016, 22:32. Показов 2454. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые. Осваиваю потихонечку шарпея и столкнулся с такой вот загвоздкой.
Мне нужно не просто передать ссылку на переменную в функцию, а сделать это в соседний класс.
В си я б просто запилил указатель типа "int &x", но в шарпе, как я вычитал, такое не приветствуется.
Так есть ли стандартный способ сделать переменную-указатель?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2016, 22:32
Ответы с готовыми решениями:

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

Как сделать так, чтобы несколько клиентов подключались к одному серверу?
Приветствую!У меня есть 2 кода для клиента и сервера,осуществлённые через сокеты: Клиент #!/usr/bin/env python3 import socket ...

Как сделать так, чтобы локальные переменные не обнулялись автоматически?
Сижу под Linux, использую Code::Blocks, компилятор gcc. Я заметил одну неприятную вещь: когда я где-то забываю что-то обнулить,...

12
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.03.2016, 22:36
Цитата Сообщение от Ezingrin Посмотреть сообщение
есть ли стандартный способ сделать переменную-указатель?
Указатель на что именно? Если на метод - то для этого есть делегаты.
Если на переменную - то можно определить переменную, видимую из обоих классов.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
07.03.2016, 22:41
Ezingrin, я бы вообще не стал такого проделывать со значимыми типами, чтобы потом не запутаться... Я думаю, стоит пересмотреть архитектуру приложения, чтобы это не было нужно.
0
 Аватар для Ezingrin
2 / 2 / 0
Регистрация: 24.07.2012
Сообщений: 69
07.03.2016, 22:41  [ТС]
insite2012, эм... глобальную переменную ввести? А это точно нормально? А то в том же си это был моветон...
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
07.03.2016, 22:43
Ezingrin, вы про задачу рассказали бы поподробнее, скорее всего и тут это окажется моветоном, зависит от специфики Глобальные переменные в шарпе выглядят как статические классы и их поля.
0
 Аватар для Ezingrin
2 / 2 / 0
Регистрация: 24.07.2012
Сообщений: 69
07.03.2016, 22:43  [ТС]
EvilFromHell, сам знаю что криво и надо переделывать Но сейчас меня уже сам вопрос интересует. Можно ли "красиво" сделать указатель на участок памяти другой переменной.
0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
07.03.2016, 22:44
Ezingrin, любая переменная на ref тип это ссылка, что по сути и есть указатель. Что именно мешает передать ссылку и сохранить её в классе?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.03.2016, 22:44
Цитата Сообщение от Ezingrin Посмотреть сообщение
глобальную переменную ввести?
Ну скажем так, как таковую глобальную переменную в C# не сделать (можно в IL, но это другой вопрос).
Можно создать статический класс с статическими свойствами и там все хранить.
Цитата Сообщение от Ezingrin Посмотреть сообщение
это точно нормально?
Если того требует ваша программа-почему же нет.
0
 Аватар для Ezingrin
2 / 2 / 0
Регистрация: 24.07.2012
Сообщений: 69
07.03.2016, 22:48  [ТС]
Vigelforts, вот этого я и не пойму.
в си это было бы примерно так
C++
1
2
int y;
int &x = y;
А в шарпе как?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.03.2016, 22:54
Цитата Сообщение от Ezingrin Посмотреть сообщение
А в шарпе как?
Если уж вам так нужны указатели, то как-то так))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication8 {
    unsafe class Program {
        static void Main(string[] args) {
            int y;
            int* x = &y;
            *(x) = 100;
        }
    }
}
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
07.03.2016, 23:28
Цитата Сообщение от insite2012 Посмотреть сообщение
Если уж вам так нужны указатели, то как-то так))
insite2012, Зачем учить человека плохому?

Ezingrin, СиШарп это не Си. Тут совсем другие подходы. Я бы вам советовал сначала освоить полностью язык, и забыть на время о Си. И когда вы поймете внутреннюю логику языка, вам уже никакие "указатели на перменные" не будут нужны.

Если у вас есть конкретная проблема, выкладывайте и мы подумаем как ее решить. Изучать же язык в стиле "а как вот сделать вот тоже самое что в Си, но на С#" не конструктивно.
2
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
08.03.2016, 08:25
Лучший ответ Сообщение было отмечено Ezingrin как решение

Решение

Чё вы человека мучаете unsafe кодом))
Ezingrin,

C#
1
2
T x = new T();
T y = x;
Теперь обе переменные это ссылки на один объект в памяти. Однако это работает только для ссылочных типов. Для значимых придётся обернуть это всё в какой-то класс
1
 Аватар для Ezingrin
2 / 2 / 0
Регистрация: 24.07.2012
Сообщений: 69
08.03.2016, 16:22  [ТС]
Vigelforts, спасибо тебе, добрый человек. Это именно то, что я и хотел узнать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2016, 16:22
Помогаю со студенческими работами здесь

Как сделать так чтобы переменные сбрасывались после перезагрузки сцены
Здравствуйте, пишу небольшую игру, в общем надо чтобы здоровье возвращалось в значение 1f, однако после перезагрузки сцены оно остаётся на...

Как сделать так, чтобы при масштабировании объекта, объект расширялся только по одному вектору
Всем привет, я новичок в Unity3D. Столкнулся с проблемой при создании лазера. Цилиндр, который я использую как лазер, расширяется от центра...

Как сделать, чтобы к определенному участку номер вводился сам?
Добрый день! Помогите в таком вопросе. Создаю базу садового товарищества. При переходе по кнопке "оплата электроэнергии"...

Как сделать так, чтобы переменные сессии удалялись после закрытия браузера?
Здравия всем! Подскажите пожалуйста, как сделать так, чтобы после закрытия браузера, сессия разрывалась и удалялись все переменные сессии....

AutoLISP; как сделать так, чтобы функции princ , prin1 и print печатали аргумент ПО ОДНОМУ РАЗУ
Друзья! Работаю в VisualLISP, AutoCAD Неужели ничего умного не придумали на этот счёт? Вывожу значение какой-нибудь переменной,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru