VB.NET Errore - Null Riferimento eccezione potrebbe verificarsi in fase di esecuzione quando si utilizza il risultato

StackOverflow https://stackoverflow.com/questions/5821199

Domanda

Sfondo: Ho scritto il codice che in uscita saranno tutti attualmente connesso nomi di gruppo di Active Directory dell'utente. Voglio il nome del gruppo (es: Acomp_user_BIG) tramite IdentityReference.Translate invece di SID dell'utente corrente (es: S-1-5-32-544) ha restituito via IdentityReference.Value.

Ecco il codice che ho usato:

Public ReadOnly Property Groups As IdentityReferenceCollection
    Get
         Dim irc As IdentityReferenceCollection
         Dim ir As IdentityReference
         irc = WindowsIdentity.GetCurrent().Groups

         For Each ir In irc
              Dim account As IdentityReference = ir.Translate(GetType(NTAccount))
              Debug.WriteLine(account.Value)
         Next

    End Get
End Property

Purtroppo, ho l'errore sul "Fine Get":

   Warning  1   Property 'Groups' doesn't return a value on all code paths. 
                A null reference exception could occur at run time when the 
                result is used. 

Qualche suggerimento per la risoluzione di questo errore?

È stato utile?

Soluzione

Public ReadOnly Property Groups As IdentityReferenceCollection
    Get
         Dim irc As IdentityReferenceCollection
         Dim ir As IdentityReference
         irc = WindowsIdentity.GetCurrent().Groups

         For Each ir In irc
              Dim account As IdentityReference = ir.Translate(GetType(NTAccount))
              Debug.WriteLine(account.Value)
         Next

         **return irc**
    End Get
End Property

Tuttavia, cercando in codice del IRC viene modificato in modo si dovrebbe fare una nuova IdentityReferenceCollection (ammesso che dispone di un metodo .add ()) poi fare .add (account) e restituire la tua nuova collezione

Altri suggerimenti

Il codice non restituisce nulla in uno qualsiasi dei percorsi di codice.

Non sono sicuro di ciò che si desidera per tornare, ma tornando la collezione sarebbe partita il tipo di proprietà:

Return irc

che avrebbe comunque fare la maggior parte del codice nella proprietà inutile, così forse si vuole un tipo di ritorno diverso, o forse non si vuole fare una proprietà a tutti.

Una proprietà Get dovrebbe restituire un valore . La tua struttura non lo fa; si stanno semplicemente stampando alcune cose alla console. Questo non è ciò che un immobile è lì per.

Una proprietà Get dovrebbe Return qualche valore, e non dovrebbe fare molto altro ancora. Se si desidera eseguire una logica di effetti collaterali, utilizzare un Sub. Se anche voi volete restituire un valore, utilizzare un Function.

solo proprietà utilizzare se si desidera semplicemente di restituire un valore senza avere un calcolo con effetti collaterali.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top