[ad_1]
Esto no es un problema, solo una pregunta sobre la declaración de uso.
Si tengo una rutina como esta.
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; }
¿La instrucción de uso persiste durante la rutina de guardar cambios ejecutada?
¿Persiste sobre otras rutinas ejecutadas desde dentro del bloque?
¿El uso finalizará únicamente con una devolución?
¿Cuál es la diferencia si pongo todo el código entre llaves?
Soy nuevo en esto todo el doco no lo deja claro.
Lo que he probado:
Actualmente sólo he intentado hacer esto dentro de un bloque.
Solución 1
Ver declaración de uso – garantizar el uso correcto de objetos desechables – C# | Microsoft aprende[^].
Solución 2
Hay dos formas diferentes de using
*
El using statement
que requiere paréntesis:
using (MyClass mc = new MyClass()) { // mc in scope here ... } // mc no longer in scope
El sistema llamará automáticamente a Dispose para la variable cuando se salga del bloque de código de cualquier forma: caída, excepción, break
, continue
, throw
o return
.
El using declaration
:
{ ... using MyClass mc = new MyClass(); // mc in scope here ... } // mc out of scope here
La variable se eliminará cuando el código salga del ámbito en el que se declara la variable (normalmente entre llaves) de la misma manera que para el using statement
.
* Bueno, tres: también está el using directive
que aparece en la parte superior del archivo y crea alias.
[ad_2]
コメント