c#中的结构清晰

时间:2015-03-23 12:05:36

标签: c#

假设我有一个有几个成员的结构,例如。

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呼叫?

2 个答案:

答案 0 :(得分:1)

内存管理通常不应该是C#中的一个问题,而不是C或C ++。有垃圾收集器来处理内存清除。只要对结构的所有引用都消失了,垃圾收集器就会在将来的某个地方回收内存。当与开发人员完全无关时。

答案 1 :(得分:0)

如果您的课程中有一个字段只是暂时使用,那么您的课程设计不合理且不符合OOP原则。

如果您正在使用该字段作为辅助值,则应将其替换为使用它的每个范围中的变量;通过这种方式,您可以减少令人生畏的副作用,并且由于它是一种值类型,它将被分配到堆栈中并在控制流离开当前块时立即清除(假设您不在t在lambda表达式中捕获它。)