BegUsing/EndUsing Blocks

The BegUsing/EndUsing block provides a convenient way to use IDisposable objects correctly. Its syntax is:
BegUsing Name() Type() Value()

EndUsing
```

The Name parameter is required. Name specifies the name of a property or field, visible in the scope and declared with the proper type. You can specify Type instead if this is a new name in the scope (keep in mind that this declaration is valid in the whole method body).

The type must be a class or interface that implements IDisposable . If given, Value specifies the expression to be evaluated and assigned to Name ; otherwise Name should already have a value. When execution reaches the end of the BegUsing block, the variable will be disposed and set to *nothing to prevent its (invalid) usage outside the block.

BegUsing 
	  myFld type(myDisposableClass) value(*new myDisposableClass()) 
	  ... 
	  EndUsing 
    Is equivalent to:
    <pre>DclFld myFld type(myDisposableClass)  myFld = *new myDisposableClass()  Try    ...  Finally    If myFld <> *nothing 
 myFld.Dispose() 
 myFld = *nothing    EndIf EndTry
  </pre>

Warning – BegUsing/EndUsing blocks are only to be used with IDisposable Objects.

See Also

DCLPROP

BEGSR

Custom Attributes

DCLSRPARM

ENDPROP

LEAVESR