Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4049.00元
非托管资源释放
大旭发起了问答2023-04-07
2
回复
248
浏览

老师你好,在Unity应用中是否会使用析构函数Finalize或者IDisposable?

如果需要使用,有没有具体的Unity使用案例可以分享一下吗?

所有回复
  • 老师_Trigger 2023-04-07

    同学你好

    因为Unity采用了垃圾回收机制, 在不再被引用时自动销毁,一般不用。但有一些情况比如在Unity中如果需要读取和写入文件,需要使用FileStream来操作。 每当FileStream被打开时,系统就会为它分配一部分内存,使用完毕后需要释放这部分内存,如果不释放就会造成内存泄漏。在这种情况下,我们就可以使用C#中的IDisposable接口,通过实现Dispose方法来释放资源。

    using System;
    using System.IO;
    
    public class MyFile : IDisposable
    {
        private FileStream _fileStream;
    
        public MyFile(string path)
        {
            _fileStream = new FileStream(path, FileMode.Open);
        }
    
        public void Dispose()
        {
            _fileStream.Close();
            _fileStream.Dispose();
        }
    }
    
    // 在其他类中使用
    public class MyClass
    {
        private MyFile _myFile;
    
        public void OpenFile(string path)
        {
            _myFile = new MyFile(path);
        }
    
        public void CloseFile()
        {
            _myFile.Dispose();
            _myFile = null;
        }
    }
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!