Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dispose中的成员变量访问_C#_Dispose - Fatal编程技术网

C# Dispose中的成员变量访问

C# Dispose中的成员变量访问,c#,dispose,C#,Dispose,我试图了解更多关于Dispose方法的信息,以及在这个方法中发生的事情如何可能会暂停这个对象的垃圾收集 因此,如果我有: DateTime _date = DateTime.UtcNow; public void Dispose() { bool append = true; using(var log = new System.IO.StreamWriter("log.txt", append)) { log.WriteLine("Logged on: " +

我试图了解更多关于Dispose方法的信息,以及在这个方法中发生的事情如何可能会暂停这个对象的垃圾收集

因此,如果我有:

DateTime _date = DateTime.UtcNow;

public void Dispose()
{
   bool append = true;
   using(var log = new System.IO.StreamWriter("log.txt", append))
   {
       log.WriteLine("Logged on: " + _date);
   }
}
我在Dispose方法中调用_date这一事实是否会重新根变量,而不允许GC收集该变量


这是从我的问题开始的。

垃圾收集器与
Dispose()
没有任何关系,因此简单的答案是:根本没有。GC涉及终结器(
~YourType()
),但不涉及
Dispose()
,除非您指的是公共
Dispose(bool disposing){…}
模式


其次,
DateTime
是一个
struct
,因此不会被垃圾收集。

垃圾收集器与
Dispose()
没有任何关系,因此简单的答案是:根本没有。GC涉及终结器(
~YourType()
),但不涉及
Dispose()
,除非您指的是公共
Dispose(bool disposing){…}
模式


其次,
DateTime
是一个
struct
,因此不会被垃圾收集。

绝对不会。Dispose本质上与垃圾收集无关(除了许多实现将调用
GC.SuppressFinalize(this)

dispose模式允许对象的使用者保持礼貌,并尽快释放非托管资源。垃圾收集是适当时释放托管资源的标准方法


一些一次性类还将实现终结器,这样,如果收集对象而不进行处置,则可以紧急释放非托管资源。

绝对不会。Dispose本质上与垃圾收集无关(除了许多实现将调用
GC.SuppressFinalize(this)

dispose模式允许对象的使用者保持礼貌,并尽快释放非托管资源。垃圾收集是适当时释放托管资源的标准方法


一些一次性类还将实现终结器,这样,如果收集对象而不进行处置,则可以紧急释放非托管资源。

1。Dispose与GC无关。2.Dispose永远不应该抛出异常,但是你的代码很容易抛出异常。那么这是上面代码的唯一真正问题吗?它可能会抛出异常,但仍能正确收集?@Richard-它不会抛出,所有内容都会被收集。@Henk-它不会抛出,因为写入文件时出现问题(磁盘已满或类似情况)?是的,该部分可能会抛出。但是实际上GC和Dispose是不相关的。Dispose与GC无关。2.Dispose永远不应该抛出异常,但是你的代码很容易抛出异常。那么这是上面代码的唯一真正问题吗?它可能会抛出异常,但仍能正确收集?@Richard-它不会抛出,所有内容都会被收集。@Henk-它不会抛出,因为写入文件时出现问题(磁盘已满或类似情况)?是的,该部分可能会抛出。但实际上GC和Dispose是不相关的。