¿Que es lo mas cosas similares en vb.net a un puntero, como la C poinetrs?

Tengo un TreeView dentro de una clase. Necesito exponer algunos de los nodos específicos (u hojas) que pueden ser modificados por los objetos externos.

InformationsquelleAutor pistacchio | 2009-04-17

5 Comentarios

  1. 4

    Nathan W ya ha sugerido la IntPtr estructura que puede representar un puntero o mango, sin embargo, a pesar de que esta estructura es parte y parcela de la .NET framework, .NET realmente no tiene punteros por decir, y ciertamente no como C punteros.

    Esto es principalmente debido a la .NET Framework es una «gestión» de la plataforma y la memoria se gestiona, asignados asignados y no asignados por el CLR sin que el desarrollador, tener que preocuparse de ello (es decir, no malloc comandos!) Esto es principalmente debido a que de esta memoria de gestión que realmente no tienen acceso directo a las direcciones de memoria.

    La cosa más cercana dentro de la .NET Framework que puede ser pensado como un «puntero» (pero en realidad no lo es) es el delegado. Usted puede pensar en un delegado como un «puntero a función», sin embargo, no es en realidad un puntero en el sentido más estricto. Los delegados agregar tipo de seguridad para las llamadas a las funciones, permitiendo que el código que se «invoca» una instancia de delegado para asegurarse de que está llamando el método correcto con los parámetros correctos. Esto es a diferencia de la «tradicional» de los punteros, ya que no son de tipo seguro, y se limita a hacer referencia a una dirección de memoria.

    Delegados están en todas partes en el .NET Framework, y cada vez que utilice un evento, o responder a un evento, usted está utilizando los delegados.

    Si quieres usar C# en lugar de VB.NET que se puede escribir código que está marcado como «inseguro«. Esto permite que el código dentro de la inseguro bloque para que se ejecute fuera de la protección de la CLR. Esto, a su vez, permite el uso de «real» los punteros, al igual que en C, sin embargo, todavía tiene algunas limitaciones (como lo puede ser en la dirección de memoria que apunta a).

  2. 5

    C#, y creo que también VB.Net trabajará sobre el concepto de referencias. Esencialmente, esto significa que cuando usted dice

    A a = new a()

    la ‘a’ es una referencia, y no el objeto real.

    Por lo tanto si me

    B b = a

    b es otra referencia al mismo objeto subyacente.

    Cuando desea exponer en el interior de los objetos, puede hacerlo simplemente por la exposición de ‘propiedades’. Asegúrese de que usted no proporcionan setters de las propiedades, o que si lo hace, no hay código para comprobar si el valor es legal.

    ByRef se utiliza cuando se desea pasar el objeto como parámetro, y cuando se desea que el llamado método para poder cambiar la referencia (como opuesto al objeto).

    Como se mencionó anteriormente, si usted publica algo de código, será más fácil de explicar.

  3. 2

    Mejor manera de hacerlo es asignar todo manualmente:

    Puede desplazarse hacia arriba O hacia abajo en cada Pila en el libre albedrío, sin Empujar o hacer Estallar.

    Dim Stack(4095) as Byte    'for 8bit   - 1 bytes each entry
    Dim Stack(4095) as Integer 'for 16bit  - 2 bytes each entry
    Dim Stack(4095) as Long    'for 32bit  - 4 bytes each entry
    Dim Stack(4095) as Double  'for 64 bit - 8 bytes each entry
    
    Dim i as integer           'Where i is your Stack Pointer(0 through 4095)
    Dim int as integer         'Byte Integer Long or Double  (8, 16, 32, 64 bit)
    
    for i = 0 to 4095
    
        int = i
    
        Stack(i) = int/256                         'For 8bit  Byte
        Stack(i) = int                             'For 16bit Integer
        Stack(i) = Microsoft.VisualBasic.MKL$(int) 'For 32bit Long
        Stack(i) = Microsoft.VisualBasic.MKD$(int) 'For 64bit Double
    
        MsgBox(Microsoft.VisualBasic.HEX$(Stack(i))) 'To See Bitwise Length Per Entry
    
    next i
    • Posible que desee echar en Si int <> 0 entre la Pila() & MsgBox en la Cláusula Siguiente, porque la división por 0 es mortal.
  4. 0

    Si usted está buscando para pasar algo a partir de una subrutina puede pasar por referencia – como en «ByRef myParamter como Objeto».

    Mejor respuesta depende, en cierto grado, en lo que estamos tratando de hacer.

  5. 0

    Si usted está usando VB la única cosa que está muy cerca de un puntero es un IntPtr. Si usted tiene acceso a C# puede utilizar inseguro de código en C# para hacer puntero de trabajo.

Dejar respuesta

Please enter your comment!
Please enter your name here