[ad_1]
Ce n’est pas un problème, juste une question sur l’instruction using.
Si j’ai une routine comme celle-ci.
public static int UpdateSeries(int mazeSeriesID) { Gbl.z_MethodMain = "(Common)UpdateShows"; using SqliteDBContext dbContext = new(); have some code which updates or creates sqlite records then executes a save changes block as follows. }
public static bool SaveEntityChanges(string label = "") { Gbl.z_MethodMain = "(Common)SaveEntityChanges"; bool result = true; try { DbContext.SaveChanges(); } catch(Exception ex) { Utils.WriteLog( Gbl.z_MsgLogName, 1, "Error occurred while Saving Changes to Database - Exception= " + ex.Message, Gbl.z_MethodMain, label); result = false; } return result; }
L’instruction using persiste-t-elle pendant la routine de sauvegarde des modifications exécutée ?
Est-ce qu’il persiste par rapport aux autres routines exécutées à partir du bloc ?
L’utilisation ne prendra-t-elle fin qu’au retour ?
Quelle est la différence si je mets tout le code entre accolades ?
Je suis nouveau dans ce domaine, tout le doco ne le dit pas clairement.
Ce que j’ai essayé :
Pour le moment, je n’ai essayé de le faire que dans un bloc.
Solution 1
Voir using instruction – garantir l’utilisation correcte des objets jetables – C# | Microsoft Apprendre[^].
Solution 2
Il existe deux formes différentes de using
*
Le using statement
qui nécessite des parenthèses :
using (MyClass mc = new MyClass()) { // mc in scope here ... } // mc no longer in scope
Le système appellera automatiquement Dispose pour la variable lorsque le bloc de code est quitté de quelque manière que ce soit : échec, exception, break
, continue
, throw
ou return
.
Le using declaration
:
{ ... using MyClass mc = new MyClass(); // mc in scope here ... } // mc out of scope here
La variable sera supprimée lorsque le code quittera la portée dans laquelle la variable est déclarée (il entoure généralement des accolades) de la même manière que pour le using statement
.
* Eh bien, trois – il y a aussi le using directive
qui apparaît en haut du fichier et crée des alias.
[ad_2]
コメント