Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    [vb.net]test nothing su variabile value o reference

    Ho una procedura con un parametro stringa. Se la richiamo e le passo nothing, posso verificare nella procedura

    stampa --> (variabile is nothing)


    se la procedura ha un parametro value, per esempio integer e la richiamo passando nothing, posso fare

    stampa --> (variabile = nothing)

    inoltre, la variabile intera (se passo nothing) è sia = 0, sia = nothing


    volevo sapere se questo è normale e se posso fare questo test normalmente (con i parametri value)
    Pietro

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Sicuro che l'intero accetta nothing ???

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da cassano
    Sicuro che l'intero accetta nothing ???
    Lo sto provando con Visual Studio 2005 e ho scritto qui perchè la cosa mi sembra strana e perchè non va daccordo con quello che ho letto sui libri del Balena.
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    e naturalmente, non funziona con c#, ma solo col basic

    protected void Button1_Click(object sender, EventArgs e)
    {
    prova(null);
    }

    private void prova(int n)
    {
    Response.Write(n == null);
    }
    Pietro

  5. #5
    Nothing ha senso solo come valore per variabili di tipi reference: i tipi reference infatti sono puntatori a istanze di classi situate nell'heap, e Nothing rappresenta un puntatore nullo (che non punta a nulla). Non ha senso invece assegnare Nothing ad una variabile di un tipo value, visto che questi tipi non sono puntatori.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ha senso il valore null se parliamo di tipo "nullable".

    Un intero (o un bool o un altro tipo ...) puo' essere dichiarato nullable e quindi potrà assumere *anche* il valore null oltre ai normali valori del suo "dominio". Ad esempio un bool nullable potra' avere valore false, true o null.

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Siamo perfettamente daccordo. E in effetti col c# non si presenta il problema: non si può immettere null ad una variabile di tipo intero; mentre il basic ha ancora questo difetto.
    Pietro

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... non ci siamo capiti.

    Il nullable e' una caratteristica dei dati del framework e quindi comune a VB.NET e a C# ... e non e' un difetto ...

    Ma forse tu parli d'altro ...

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da oregon
    No ... non ci siamo capiti.

    Il nullable e' una caratteristica dei dati del framework e quindi comune a VB.NET e a C# ... e non e' un difetto ...

    Ma forse tu parli d'altro ...
    io parlo di questo

    protected void Button1_Click(object sender, EventArgs e)
    {
    prova(null);
    }

    private void prova(int n)
    {
    Response.Write(n == null);
    }
    in c#, prova(null) va in errore, in basic sembra che funzioni perfettamente e, in più, il parametro se interrogato, mostra di essere contemporaneamente 0 e nothing, che mi pare un po' strano
    Pietro

  10. #10
    In effetti le cose non stanno proprio come dicevo io, e Nothing non è uguale a null; dalla MSDN:
    Nothing
    È possibile utilizzare la parola chiave Nothing per rappresentare il valore predefinito di qualsiasi tipo di dati. Se si assegna Nothing a un insieme di variabili, questo viene impostato sul valore predefinito per il relativo tipo dichiarato. Se nel tipo si trovano membri variabili, questi vengono tutti impostati ai valori predefiniti corrispondenti. Questa condizione è illustrata nell'esempio seguente:
    codice:
    Public Structure MyStruct
       Public Name As String
       Public Number As Short
    End Structure
    Dim S As MyStruct, I As Integer, B As Boolean
    S = Nothing   ' Sets S.Name to Nothing, S.Number to 0.
    I = Nothing   ' Sets I to 0.
    B = Nothing   ' Sets B to False.
    Se la variabile è di un tipo di riferimento, ovvero una variabile oggetto, Nothing indica che la variabile non è associata ad alcun oggetto. Ad esempio:
    codice:
    Dim MyObject As Object
    MyObject = Nothing   ' No object currently referred to.
    Quando si assegna la parola chiave Nothing a una variabile oggetto, tale variabile non farà più riferimento all'istanza di un oggetto. Se in precedenza la variabile ha fatto riferimento a un'istanza, l'istanza non viene automaticamente terminata quando si imposta la variabile su Nothing. L'istanza viene terminata e le risorse di memoria e di sistema associate ad essa vengono rilasciate solo quando non vengono più rilevati riferimenti attivi all'istanza.
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

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.