Что делает это средство оператора в C#?
using (object obj = new object())
{
//random stuff
}
Если вам нужно отписаться о обработчике событий, вам нужно будет иметь определенную ссылку на конкретный делегат. Глядя на делегат. Неизмещение
Вы обнаружите, что делегаты не только сравниваются с использованием справедливого равенства, однако это не имеет значения для анонимных делегатов.
Для анонимного делегата компилятор (в основном) создает новый «неанонимный» делегат для каждого анонимного делегата, даже если органы делегата одинаковы. Из-за этого каркас не найдет делегата для отписания, когда вы используете пример кода, который вы дали.
-121--1019981- Это означает, что OBJ
ISJ IDSPLECSSPLECTIDIBIDIBIDICICIBID
и будет должным образом утилизирован после с использованием блока
. Это функционально так же, как:
{
//Assumes SomeObject implements IDisposable
SomeObject obj = new SomeObject();
try
{
// Do more stuff here.
}
finally
{
if (obj != null)
{
((IDisposable)obj).Dispose();
}
}
}
Просто приведите его к длинному типу
go( (long) b);
-121--4690972- На самом деле, данные строки можно доверять, даже когда вы манипулируете им.
Если вы начинаете транзакцию с одного соединения, другие соединения не увидят никаких изменений до тех пор, пока вы не зафиксируете транзакцию.
-121--3643210-почему он существует tho.
Он существует для классов, в которых вы заботитесь об их жизни, в частности, когда класс переносит ресурс в ОС и вы хотите выпустить его немедленно. В противном случае потребуется дождаться завершения CLR (недетерминированного).
Примеры, дескрипторы файлов, подключения к БД, подключения к сокетам,....
Это способ обладать объектом, поэтому метод Dispose вызывается на выходе. Это очень полезно для соединений базы данных в частиделенке. Произошла ошибка времени компиляции, если объект не реализуется iDisposable
-121--3832539- Использование
обеспечивает правильность выделенного объекта, правильно расположенного после использования блока, даже если в блоке происходит необработанное исключение.
using (object obj = new object())
{
//random stuff
}
Эквивалентно:
object obj = new object();
try
{
// random stuff
}
finally {
((IDisposable)obj).Dispose();
}
using (object obj = new object())
{
//random stuff
}
эквивалентно:
object obj = new object();
try
{
// random stuff
}
finally {
((IDisposable)obj).Dispose();
}
-121--3832537- Это способ охватить объект, поэтому метод убытка вызывается на выходе. Это очень полезно для соединений базы данных в частиделенке. Произошла ошибка времени компиляции, если объект не реализуется iDisposable