如何在C#中清除静态变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中清除静态变量相关的知识,希望对你有一定的参考价值。

我在我的类中声明了一个静态变量,我希望它在使用后被清除。它是int类型。

此外,是否有任何控制器功能在视图卸载时调用?也许我可以在那里清除变量。

如果需要更多信息,请告诉我。 更新: 我将一个值从我的视图传递给控制器​​。现在,当我的控制器具有此值时,我希望它能够持续下去。我正在使用静态。 目前它已被证明是方便的。我欢迎有关更好解决方案的建议。但请为我提供当前问题的解决方案:)

答案

如果要清除静态变量 - 为其分配新值。

如果您想在控制器操作之前/之后执行某些操作 - 请使用action filters。自定义操作筛选器允许您覆盖以下方法(并在那里执行您的逻辑):

  • OnActionExecuting - 在执行控制器操作之前调用。
  • OnActionExecuted - 在执行控制器操作后调用。
  • OnResultExecuting - 在执行控制器操作结果之前调用。
  • OnResultExecuted - 在执行控制器操作结果后调用。
另一答案

我强烈建议您不要在Web应用程序的上下文中使用静态变量。请记住,许多请求可以由不同的线程同时处理,从而导致真正“难以发现”错误。

请改用静态ThreadLocal<T>

另一答案

您还可以在会话中包装静态变量,以便为每个会话维护不同的值,如下所示。

    public static Int32 MyInt
    {
        get
        {
            return (Int32)HttpContext.Current.Session["MyInt"];
        }
        set
        {
            HttpContext.Current.Session["MyInt"] = value;
        }
    }

而且你不需要再清除它了,如果这就是为什么你要清除它的价值。

以上是关于如何在C#中清除静态变量的主要内容,如果未能解决你的问题,请参考以下文章

如何更改片段中的主要活动变量

php静态变量小结

如何使用JNI管理C ++代码中的静态变量?

导航到Android中的另一个片段后如何清除导航堆栈

05.C语言数据常量和变量

在 C 代码库中查找全局/静态变量的工具