如何在实现 IDisposable 接口的 class 中处理具有局部变量的对象

How to dispose objects with local variables within a class that implements IDisposable Interface

public class AnswerModel: IDisposable
    {
        private bool disposedValue;

        public string Answer { get; set; }
        public string CodeSnippet { get; set; }
        public string AnswerBy { get; set; }
        public DateTime DatePosted { get; set; }

        public string TimeStatus { get; set; }

        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects)
                }

                // TODO: free unmanaged resources (unmanaged objects) and override finalizer
                // TODO: set large fields to null
                disposedValue = true;
            }
        }

        // // TODO: override finalizer only if 'Dispose(bool disposing)' has code to free unmanaged resources
        ~AnswerModel()
        {
            // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
            Dispose(disposing: false);
        }

        public void Dispose()
        {
            // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
            Dispose(disposing: true);
            GC.SuppressFinalize(this);
        }
    }




  using (AnswerModel a = new AnswerModel())
                    {
                        a.Answer = answer.Answered;
                        a.AnswerBy = answer.AnswerBy;
                        a.DatePosted = answer.DatePosted;
                        a.CodeSnippet = answer.CodeSnippet;
                        answerModel.Add(a);
                    }

如何处理 AnswerModel 实例中的变量?

它会自己发生吗?

C# 是一种内存管理语言。当没有对对象的引用并且发生 GC 循环(GC = 垃圾收集器)时,在堆上创建的对象将被自动垃圾收集。

然而,有些对象使用托管内存之外的资源,例如文件流、Web 连接或数据库连接。他们实现了一个名为 IDisposable 的接口和一个名为 Dispose() 的函数,您可以在使用完资源后调用该函数。

此外 ~Object() Finalizers 不是好的做法,因为您不知道 GC 何时释放对象,并且它会产生您无法控制的负载。

总而言之,当您的对象使用需要 Disposed 的外部资源时,您应该实施 IDisposable,这样您就可以在不再需要它们时释放资源。

public class AnswerModel
    {
        private bool disposedValue;

        public string Answer { get; set; }
        public string CodeSnippet { get; set; }
        public string AnswerBy { get; set; }
        public DateTime DatePosted { get; set; }

        public string TimeStatus { get; set; }
    }

   ......somewhere within a function call.
     AnswerModel a = new AnswerModel()
     a.Answer = answer.Answered;
     a.AnswerBy = answer.AnswerBy;
     a.DatePosted = answer.DatePosted;
     a.CodeSnippet = answer.CodeSnippet;
     answerModel.Add(a);

               
                       

这个实例是否会在没有任何终结器的情况下被垃圾回收?