클래스 MyDisposable : IDisposable
을 정의했다고 가정 해 보겠습니다. 나는 내가 using
문 IDisposable
객체의 하드 코딩 된 목록을 제공 할 수 있습니다 알고 : 이제동적으로 작성된 대상에서 using 문을 사용할 수 있습니까?
using (MyDisposable firstDisposable = new MyDisposable(),
secondDisposable = new MyDisposable())
{
// do something
}
,의 내가 내 처분 할 수있는 개체의 컬렉션에 대한 작업을 수행하는 몇 가지 방법이 있다고 가정하자 나는이 작업을 수행 할 수 using
문 내부. 그것은 다음과 같이 보일 수 있습니다 (하지만 사용하여 블록이 하나 이상의 IDisposable
객체와 내가 하나의 컬렉션 개체를 전달하고있어 기대 때문에 당연히 작동하지 않습니다) : 여기
using (var myDisposables = GetMyDisposables())
{
foreach (var myDisposable in myDisposables)
{
DoSomething(myDisposable);
DoSomethingElse(myDisposable);
}
}
단지 명확성을 위해 다른 방법이 있습니다를 :
static List<MyDisposable> GetMyDisposables()
{
throw new NotImplementedException(); // return a list of MyDisposable objects
}
static void DoSomething(MyDisposable withMyDisposable)
{
// something
}
static void DoSomethingElse(MyDisposable withMyDisposable)
{
// something else
}
using
문을 사용하여 수행 할 수있는 방법이 있습니까? 아니면 그냥 진술을 버리고 수동으로 처분해야합니까?
당신은'DisposableCollection을 만들 수를 : IDisposable, IEnumerable 여기서 T : IDisposable' –
Lee
'MyDisposable' 개체의 컬렉션을 캡슐화하는 IDisposable을 쓸 수 있으며, 그것을 처분하십시오. –
foreach 블록 안에 using 문을 추가하지 않는 이유는 무엇입니까? – peinearydevelopment