Sintassi e Performance corretta

lunedì 16 marzo 2009 - 11.16

sanfra Profilo | Junior Member

Salve, spero che il titolo del post sia corretto.
Volevo capire delle cose per quanto riguarda del codice scritto in c#.net 2.0

Ho notato in un documento e più precisamente in una funzione la seguente sintassi:

private void CheckLeaveRequest(ref LeaveRequest leaReq)


il parametro LeaveRequest è una classe, secondo voi LeaveRequest non punta già alla variabile leaReq? Perchè refenziare ancora un oggetto, quando già è referenziato?

In sostanza è corretta questa sintassi,io non l'ho mai utilizzata, so già che l'oggetto LeaveRequest punta a leaReq.

Grazie e spero di essere stato chiaro.

luigidibiasi Profilo | Guru

>>private void CheckLeaveRequest(ref >>LeaveRequest leaReq)

LeaveRequest è una definizione di classe o è un oggetto già istanziato?

Nel primo caso la sintassi è corretta perchè dici alla funzione il tipo di parametro che gli passi mentre leaReq è l'indirizzo effettivo


Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

sanfra Profilo | Junior Member

Allora, questa funzione viene chiamata inizialmente in un altra funzione che si trova in un vento click di button dove è assegnato la classe LeaveRequest leaveRequest=new LeaveRequest

e poi che la funzione statica che appunto richiama quella da me postata inizialmente:
leaves.InsertLeaveRequest(ref leaveRequest, this._sessionUser)

luigidibiasi Profilo | Guru

>> LeaveRequest leaveRequest=new LeaveRequest

La sintassi è corretta .... tu istanzi leaveRequest ( con la l piccola ) come oggetto di classe LeaveRequest ( con la L grande)

Quando definisci una funzione l'argomento è formato come nomeFunzione ( [tipo passaggio] [TipoClasse] [nomeVariabile] )

(a meno che la funzioni di cui parliamo non è un metodo di leaveRequest)....

Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

sanfra Profilo | Junior Member

scusami, ma non riesco a seguirti, tu dici che L'oggetto LeaveRequest se è istanziato LeaveRequest leaverequest =new LeaveRequest, quando lo passo come parametro alla funzione è corretto inserire ref altrimenti se non è istanziato non è corretta la sintassi.

Giusto?

luigidibiasi Profilo | Guru

La parola chiave ref indica alla funzione che l'argomento verrà passato per riferimento e quindi ogni modifica che effettuerai su quella variabile andrà a ripercuotersi anche all'esterno della funzione...
Se tu chiami in sequenza 5 funzioni che devono operare su una variabile esterna (di una classe) devi passare l'argomento come ref affinchè tutte le funzioni possano accedere alla variabile stessa...

In alternativa puoi passare l'argomento x valore.. in quel caso ogni modifica effettuata sull'argomento non và a ripercuotersi sulla variabile originale...

Nel tuo caso non sappiamo cosa devi farne della variabile quindi mi sono limitato a dire
che la sintassi era corretta :)

mod:
dimenticavo.. se la variabile è globale come scope allora il discorso fatto prima non vale... puoi accederci da qualsiasi parte del codice

Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5