0 / 0 / 0
Регистрация: 29.10.2009
Сообщений: 7
1

Какая разница между void и Object

20.08.2012, 15:07. Показов 2541. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Скажите пж, в чем разница между
C#
1
void* ptrForAnything;
и
C#
1
Object myObject;
Ясно, что нужно разное обращение и различные эксепшены вылетают в случае ошибок. Но, если не путаю, основной смысл у обоих - нетипизированный указатель (ссылка).

За ранее благодарен.
0
20.08.2012, 15:07
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.08.2012, 15:07
Ответы с готовыми решениями:

Какая разница между поисками?
Какая разница между этим поиском в массиве for (int i = 0; i < 5-1; i++) for (int j = i+1; j < 5; j++) И этим поиском ...

Какая разница между двумя строками кода?
Какая разница между: public string field; и public string field {set;get;} Я как бы понимаю что сверху открытое поле...

Какая разница между автоматическим свойством и публичным полем?
Только начал изучать С# (после С++ кажется чуток не обычным) и прошу объяснить по-проще разницу между автоматическим свойством и публичным...

4
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.08.2012, 15:16 2
Насколько мне известно в шарпе не приветствуется использование указателей (явных имею ввиду)
0
54 / 53 / 5
Регистрация: 14.08.2012
Сообщений: 252
20.08.2012, 15:57 3
void* - нетипизированный указатель (небезопасный код). Может указывать только на значимый тип. С ним запрещены операции как с типизированным указателем.


object - объект (вершина иерархии) (управляемый код). object не нарушает безопасность типов, к нему можно привести как структуры (упаковка), так и ссылочные типы.

C#
1
2
3
4
5
6
void* p;
double d;
int g;
 
p = &d;
g = *(int*)p; //вполне допустимо (нарушает безопасность типов)
C#
1
2
3
4
5
object o = new object();
double d;
int i;
o = d;
i = (int)o; //недопустимо

Из MSDN:

Любой из следующих типов может быть типом указателя.
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal или bool.
Любой тип enum.
Любой тип указателя.

Типы указателей не наследуют от объектов, не существует преобразований между типами указателей и object. Кроме того, для указателей не поддерживается упаковка и распаковка. Впрочем, можно выполнять преобразования между различными типами указаний, а также между типами указателей и целыми типами.
Указатель не может указывать на ссылку или на структуру, содержащую ссылки, поскольку ссылка на объект может быть подвергнута сбору мусора, даже если на нее указывает указатель. Сборщик мусора не отслеживает наличие указателей любых типов, указывающих на объекты.
1
0 / 0 / 0
Регистрация: 29.10.2009
Сообщений: 7
20.08.2012, 16:00  [ТС] 4
Понял, спасибо!
0
Эксперт .NET
 Аватар для kolorotur
17796 / 12947 / 3381
Регистрация: 17.09.2011
Сообщений: 21,232
20.08.2012, 16:01 5
void* - это указатель на адрес в памяти, object - это ссылка на экземпляр класса.
Абсолютно разные вещи.
0
20.08.2012, 16:01
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2012, 16:01
Помогаю со студенческими работами здесь

Какая разница между Console.ReadLine() и Сonsole.In.ReadLine()?
какая разница между Console.ReadLine() и Сonsole.In.ReadLine() ?

Какая разница между возвращением значения и присваивания значения?
Какая разница между возвращением значения и присваивания значения? Я всегда думал, что возвращение это одно и тоже что и присваивание, но...

Какая разница между типами double и Double
Ребята попытайтесь объяснить или дайте ссыль а то как то найти не получаеться! какая разница между этими типами переменных? ...

Какая разница между "модулем" и "классом" на этапе компиляции?
Есть вопрос, я не совсем его понял. Вопрос звучит так - "Какая разница между "модулем" и "классом" на этапе...

Void и Out: что лучше и в чем разница
В чем разница и что лучше,объясните пожалуйста private object ChangeName(string name,object o) { o.Name = name; return o; } ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Linux API: Полное руководство
hw_wired 08.02.2025
Linux API – это низкоуровневый программный интерфейс, обеспечивающий взаимодействие пользовательских приложений с ядром операционной системы. Он включает набор системных вызовов, библиотечных функций. . .
Асинхронное программировани­­­­­е и эмуляция async/await в C (СИ)
hw_wired 08.02.2025
Язык программирования C, несмотря на свой возраст, предоставляет неплохие средства для реализации асинхронных операций, позволяя создавать эффективные решения для обработки параллельных задач. В. . .
Как сгенерировать случайное число в указанном диапазоне в JavaScript
bytestream 08.02.2025
В JavaScript генерация случайных чисел основана на детерминированном алгоритме, который создает последовательность псевдослучайных значений. Встроенный метод Math. random() возвращает псевдослучайное. . .
Как получить список всех таблиц в PostgreSQL
bytestream 08.02.2025
PostgreSQL предлагает несколько методов для получения списка таблиц в базе данных. Наиболее распространенный способ - использование системного каталога pg_tables, который содержит информацию обо всех. . .
Java Spring для начинающих
bytestream 08.02.2025
Spring Framework - это универсальное решение для создания корпоративных Java-приложений. Он предоставляет комплексную программную и конфигурационную модель для современных приложений на Java. Spring. . .
Асинхронное программировани­­­­­­е и async/await в Visual Basic
bytestream 08.02.2025
В основе асинхронного программирования в Visual Basic лежит концепция неблокирующего выполнения операций. Когда программа встречает длительную операцию, например, чтение большого файла или запрос к. . .
Async/await и асинхронное программировани­­е в Delphi
bytestream 08.02.2025
Асинхронное программирование является неотъемлемой частью разработки современных приложений, позволяя создавать отзывчивые и эффективные программы. В Delphi реализация асинхронности опирается на. . .
Асинхронное программировани­­­­­е и async/await в C#
bytestream 08.02.2025
Асинхронное программирование - концепция, позволяющая приложениям эффективно выполнять длительные операции без блокировки основного потока выполнения. В контексте современной разработки на C# это. . .
Асинхронное программировани­­­­­е и горутины/каналы в Go
bytestream 08.02.2025
Язык Go изначально разрабатывался с учетом современных многоядерных процессоров и необходимости эффективного параллельного выполнения задач. В отличие от традиционных подходов к асинхронному. . .
Как восстановить stash в Git
hw_wired 08.02.2025
Git stash - это средство для временного сохранения изменений в рабочей директории. В процессе разработки часто возникают ситуации, когда нужно быстро переключиться на другую задачу, но текущие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru