क्या सी # इटरेटर ब्लॉक में कोड का एक ब्लॉक प्रदान करने के लिए कोई तरीका है जो फोरच समाप्त होता है (या तो स्वाभाविक रूप से टूटने से) संसाधनों को साफ करने के लिए कहता है?'अंत में' Iterators में ब्लॉक
सबसे अच्छा मैं उपयोग कर रहा हूं उपयोग के निर्माण का उपयोग करना है, जो ठीक है लेकिन साफ करने के लिए एक आईडीस्पोजेबल क्लास की आवश्यकता है। उदाहरण के लिए:
public static IEnumerable<string> ReadLines(this Stream stream)
{
using (StreamReader rdr = new StreamReader(stream))
{
string txt = rdr.ReadLine();
while (txt != null)
{
yield return txt;
txt = rdr.ReadLine();
}
rdr.Close();
}
}