Я запутался в AddressOf в C# и указатель в C++? Я прав, что Addressof управляет исполнением, а указатель является неуправляемым исполнением или чем-то еще?В чем разница между AddressOf в C# и указателем в C++
ответ
АдресOf является оператором VB и не существует в C#. Он создает делегата для процедуры. Делегат можно использовать позже, чтобы вызвать процедуру в коде, которая не включает имя процедуры.
Указатель в C/C++ - это представление адреса в памяти. Вы можете создать указатель на функцию и использовать ее для вызова этой функции, поэтому в этом конкретном случае указатели и делегаты ведут себя одинаково. Однако делегаты - это не просто указатели на функции. Самое важное отличие состоит в том, что делегаты могут быть связаны цепью и одновременно вызывать несколько процедур.
Пробу из MSDN говорит большая часть истории:
int number;
int* p = &number;
Console.WriteLine("Value pointed to by p: {0}", p->ToString());
Это присваивает адрес переменной номер в указатель на ан-междунар р.
Есть некоторые уловы к этому: 1. Переменная, адрес которой вы выбираете, должен быть инициализирован. Не проблема для типов значений, которые по умолчанию, но это проблема для ссылочных типов.
В .NET переменные могут перемещаться в памяти, не зная об этом. Если вам нужно иметь дело с адресом переменной, вы действительно хотите использовать fixed для привязки переменной в ОЗУ.
& может применяться только к переменной, а не к константе или значению. (Другими словами, вы не можете использовать конструкцию типа int * p = & GetSomeInt();)
Опять же, ваш код должен быть скомпилирован в небезопасном режиме, который обозначает среду CLR, в которой вы будете использовать функции вне управляемых код "защитная сетка".
- 1. В чем разница между указателем C и указателем Objective C?
- 2. C & C++: В чем разница между указателем и адресом массива?
- 3. В чем разница между массивом и указателем в C точно?
- 4. Разница между указателем в C++ и ссылочным типом в C#
- 5. В чем разница между указателем и ручкой
- 6. Разница между нормальным указателем и указателем const в c
- 7. В чем разница между указателем void и указателем NULL?
- 8. В чем разница между указателем и строками?
- 9. В чем разница между ссылкой и указателем?
- 10. Разница между константным указателем и указателем на константу в C
- 11. В чем разница между% и/в C?
- 12. В чем разница между указателем на int и указателем на указатель на int в C++?
- 13. В чем разница между нулевым указателем и указателем void?
- 14. В чем разница между (++ c) & (C++)?
- 15. В чем разница между GLSL и c?
- 16. В чем разница между C# и .NET?
- 17. В чем разница между b и c?
- 18. В чем разница между «VC++» и «C++»?
- 19. В чем разница между char и char * в C++?
- 20. В чем разница между указателями и глобальными переменными в C?
- 21. В чем разница между типами DWORD и HANDLE в C?
- 22. В чем разница между C++, объектно-c и объектно-C++?
- 23. В чем разница между% .c и * .c в GNU Make
- 24. В чем разница между статической переменной в C++ и C#?
- 25. В чем разница между VARNAME_T и VARNAME_P в c/C++
- 26. В чем разница между% c и% s в C
- 27. Оператор AddressOf в C
- 28. AddressOf альтернатива в C#
- 29. В чем разница между экземпляром делегата и указателем метода?
- 30. В чем разница между указателем и массивом в следующем контексте?