¿Podría anyboby ayudarme con la solución alternativa en C# con respecto al operador AddressOf en VB6? AddressOf devuelve un valor largo. ¿De qué manera puedo obtener la salida en C#?AddressOf alternativa en C#
Respuesta
C# tiene una sintaxis especial para asignar funciones a delegados/eventos. Solo use <delegate> += <function>;
Si realmente está tratando de obtener la dirección para otro uso, no tiene suerte. Una de las cosas sobre el código administrado es que estas direcciones no son necesariamente correctas. Si bien es poco probable que la mayoría de las funciones cambien, existen circunstancias en las que es posible.
Aparentemente, esto se puede hacer (aunque no estoy seguro de dónde lo necesitaría). Aquí está el MSDN page.
EventHandler handler1 = this.button1_Click;
EventHandler handler2 = new EventHandler(this.button1_Click);
...
...
...
void button1_Click(object sender, EventArgs e){
// ....
}
Ambas anotaciones son equivalentes.
Ampliando la respuesta de Harper Shelby, sí se puede hacer, pero en general es un olor a código hacerlo en .NET.
Para obtener la dirección de una variable en C#, puede utilizar la sintaxis del puntero estilo C (*)/dirección (&)/dereferencia (->). Para hacerlo, tendrá que compilar la aplicación con el modificador de compilador inseguro, ya que está saltando de la red de seguridad del código administrado tan pronto como comience a manejar las direcciones de memoria directamente.
La muestra de MSDN dice la mayor parte de la historia:
int number;
int* p = &number;
Console.WriteLine("Value pointed to by p: {0}", p->ToString());
Esto asigna la dirección de la variable a la number
-puntero a un int-p
.
Hay algunas capturas a esto:
- La variable cuya dirección esté recogiendo debe ser inicializado. No es un problema para los tipos de valor, que es el predeterminado, pero es un problema para los tipos de referencia.
- En .NET, las variables pueden moverse en la memoria sin que usted se dé cuenta. Si necesita manejar la dirección de una variable, realmente quiere usar
fixed
para fijar la variable en la RAM. - & solo se puede aplicar a una variable, ni una constante ni un valor. (En otras palabras, no puede usar una construcción como
int* p = &GetSomeInt();
) - De nuevo, su código debe compilarse en modo inseguro, lo que señala que la CLR utilizará características fuera del código administrado "red de seguridad".
En general, mi consejo en este mundo es a considerar seriamente qué cree que necesita para hacer esto en el mundo .NET. Una de las misiones de .NET fue proteger a los desarrolladores de ir contra el metal, y esta característica es contraria a esa misión. Existe para los escenarios (raros) donde se necesita; Si te encuentras frívolamente usando esto simplemente porque puedes, probablemente estés mal usándolo e introduciendo el olor del código.
Evítelo si es posible, pero sepa cómo usarlo si es absolutamente necesario.
- 1. AddressOf con el parámetro
- 2. alternativa gettext lib en C?
- 3. Alternativa de strcpy en C++
- 4. ¿Alternativa a C, C++? Todo
- 5. Cómo fijar AddressOf requiere una conversación relajada al error delegado
- 6. alternativa C++ para pError()
- 7. Alternativa a C++ excepción
- 8. Alternativa al hilo. ¿Dormir en C#?
- 9. Alternativa ligera a Manual/AutoResetEvent en C#
- 10. boost :: alternativa opcional en C++ Standard Library
- 11. ¿Alternativa para C-key en Emacs?
- 12. ¿Hay alguna alternativa para dormir() en C?
- 13. C/C++ alternativa a Apache Tika
- 14. std :: vector alternativa para C
- 15. ¿Hay alguna alternativa a C?
- 16. C++ 11 alternativa a localtime_r
- 17. NoSQL alternativa libre (alternativa a ravendb) para C# desarrollo
- 18. C/C++ ¿Alternativa libre a Lint?
- 19. C# Servicios de Windows Alternativa
- 20. C#: alternativa a GenericType == null
- 21. Alternativa a C++ estática métodos virtuales
- 22. C# alternativa de migraciones de carriles
- 23. compilador Intel C++ como alternativa a Microsoft?
- 24. C# alternativa a socket.io para node.js
- 25. Emacs + C/C++ + Doxygen: ¿alternativa a doxymacs? Con yasnippet?
- 26. ¿Hay una alternativa nativa de C++ al "memcmp" de C?
- 27. CGRectMake alternativa
- 28. ¿Hay una alternativa de Boost.Bimap en C++ 11?
- 29. Alternativa al uso del operador% y/operador en C++
- 30. ¿Existe alguna alternativa válida a ANTLR escrita en C#?
¿Puede proporcionar un fragmento de código? tal vez podríamos convertir la línea 'addressof' a un equivalente C#. – Hath
Ver http://stackoverflow.com/questions/7725511/vb-net-to-c-sharp-equivalent-of-addressof – reinierpost