C# quand une instruction using se termine-t-elle et est-elle nettoyée

la programmation


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

Solution 2

Il existe deux formes différentes de using*

Le using statement qui nécessite des parenthèses :

C#
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, throwou return.

Le using declaration:

C#
   {
   ...
   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.

コメント

タイトルとURLをコピーしました