C#在流中使用关键字

Dav*_*ave 1 c# stream

我应该使用using关键字或dispose方法与以下代码(因为我打开一个流):

 class Program
    {
        static void Main(string[] args)
        {
            var x = Deserialize<Dog>(new FileStream(@"C:\Documents and Settings\name\Desktop\demo.xml", FileMode.Open));
         }

        static T Deserialize<T>(Stream s)
        {
            XmlSerializer ser = new XmlSerializer(typeof(T));
            return (T)ser.Deserialize(s);
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果没有,你能解释一下为什么不(新的FileStream会自动处理/关闭流)吗?

Dan*_*rth 7

你应该使用using:

using(var stream = new FileStream(@"C:\path\demo.xml", FileMode.Open))
{
    var x = Deserialize<Dog>(stream);
    // more code ...
}
Run Code Online (Sandbox Code Playgroud)