Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [vb2010] Suffisso UL C# to VB.net

    Domanda a titolo di curiosità.

    Convertendo un programma da C# mi sono ritrovato con questa costante con suffisso, cosa non abituale in VB.net: &HFF000000UL

    Il convertitore la ha tradotta paro paro ed il codice viene letto senza errori, quindi VB capisce ed interpreta correttamente tali suffissi.

    Però volendo io "adattare" il codice ad un VB.net a me più più usuale ho provato a fare:

    CULng(&HFF000000)...... ottenendo un errore.

    In effetti, controllando, &HFF000000 = -16777216, è quindi un numero negativo ed in quanto tale ovviamente non trasformabile in ULong.

    Ma allora come mai il suffisso UL lo fa? &HFF000000UL = 4278190080

    E quale codice VB senza suffisso trasforma &HFF000000 in 4278190080?
    Ultima modifica di eziogsv; 19-09-2015 a 23:56

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa, ma tu hai provato semplicemente ad usare lo stesso suffisso

    &HFF000000UL

    anche in VB ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Si, ed ho precisato che il codice viene eseguito senza errori.

    Solo che, correggimi se sbaglio, un suffisso NON E' codice VB.net canonico, ma è più specifico di C#, per cui mi chiedevo quale codice VB.net "canonico" ottenesse lo stesso risultato.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non capisco ... leggi questo

    Type Characters (Visual Basic)
    https://msdn.microsoft.com/en-us/library/s9cz43ek.aspx

    e leggi a partire da

    Forced Literal Types

    Ma se proprio vuoi un'alternativa, scrivi

    &HFF000000&

    anche se NON è la stessa cosa, ma può valere solo in questi casi.
    Ultima modifica di oregon; 20-09-2015 a 11:16
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ok, il suffisso UL è anche correttamente interpretato da VB, ed infatti il codice funziona.

    Ma la domanda (come detto inizialmente di curiosità) rimane: volendo eliminare il suffisso, quale codice VB (chiamiamolo standard, senza suffissi o come vogliamo) ottiene lo stesso risultato?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ok ... ti ripeto che, in questo caso, puoi utilizzare la & finale per la costante

    Dim v As ULong = &HFF000000&
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Ti ringrazio per la pazienza...TUTTAVIA le "&" finale che mi consigli è un SUFFISSO, mentre io volevo semplicemente cercare di capire "in chiaro" quale "ragionamento" fa il suffisso UL (e mettiamoci anche l' &) applicato alla costante.

    Cioè, restando nel tema di &:

    Dim v As Long = &HFF000000 ======> v = -16777216

    Dim v = &HFF000000& ===========> v = 4278190080 (non richiede "as" anche se ho Option Strict on)

    è evidente che non sono la stessa cosa e che il suffisso "&" fa DI PIU' che dichiarare la costante Long.

    La semplice domanda è: che cosa???
    Ultima modifica di eziogsv; 20-09-2015 a 20:32

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    è evidente che non sono la stessa cosa e che il suffisso "&" fa DI PIU' che dichiarare la costante Long.
    E invece fa solo quello.

    Dichiara che la costante è Long (a 64 bit in VB.NET) e quindi è da intendersi come

    00000000FF000000

    mentre nel primo caso, il valore è inteso come un Integer (che è a 32 bit) e quindi viene effettuata la conversione a Long con "estensione del segno", dunque diventa

    FFFFFFFFFF000000

    Chiaro?
    Ultima modifica di oregon; 20-09-2015 a 21:23
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.