重新加载

时间:2017-02-23 00:11:36

标签: c# static-methods

我有一个按顺序显示颜色的课程

public class Color
{
     private static string[] _colors = {"Red", "Green", "Blue"};
     public static int Index { get; set; }

     public static string GetNextColor()
     {
         var retVal = _colors[Index];

         Index++;

         return retVal;
     }
}

我通过以下代码使用上述类:

 [HttpGet]
 public string TestColor()
 {
     Color.Index = 0;
     return string.Format("First color: {0} Second color: {1} Third color: {2}", Color.GetNextColor(), Color.GetNextColor(), Color.GetNextColor());
 }

显示此结果

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
First color: Red Second color: Green Third color: Blue
</string>

现在我的问题是

如何在每次重新加载页面时将索引重置为0,而不将其重置为Color.Index = 0;

根据我的知识,静态字段只能通过app restart重置,因此在我的应用程序中,每次调用此静态方法时,我总是被迫将索引重置为0。我只想要这个领域&#34;索引&#34;每次页面重新加载时重置为0。我不确定是否可以避免为我的代码的每个顶部设置Color.Index = 0

1 个答案:

答案 0 :(得分:0)

如果您想要一个随每个页面请求重置的变量,您应该将其作为成员变量而不是静态变量。您的视图,控制器,模型和管道对象都被拆除,并为每个HTTP请求重新创建,因此它会自动重置颜色。

如果您坚持使用静态变量,只需向Application_BeginRequest添加一行代码即可将其设置为0。