假设我有一个有几个成员的结构,例如。
private struct MyStats
{
public int packsGood, packsBad, packsTotal;
public bool haveAcceptedStart;
// ...and a bunch of other parameters
}
如果我有一个MyStats类型的成员变量,我该如何使用它一段时间然后快速清除它?在Delphi或C ++中,我可能使用了以下代码:
memset(&m_stats, 0, sizeof(MyStats)); // C++
ZeroMemory(@m_stats, SizeOf(MyStats)); // Delphi
但这在C#中似乎不可能。当然,我不是每次都要对所有成员发出喋喋不休的话,或者发出API呼叫?
答案 0 :(得分:1)
内存管理通常不应该是C#中的一个问题,而不是C或C ++。有垃圾收集器来处理内存清除。只要对结构的所有引用都消失了,垃圾收集器就会在将来的某个地方回收内存。当与开发人员完全无关时。
答案 1 :(得分:0)
如果您的课程中有一个字段只是暂时使用,那么您的课程设计不合理且不符合OOP原则。
如果您正在使用该字段作为辅助值,则应将其替换为使用它的每个范围中的变量;通过这种方式,您可以减少令人生畏的副作用,并且由于它是一种值类型,它将被分配到堆栈中并在控制流离开当前块时立即清除(假设您不在t在lambda表达式中捕获它。)