【问题标题】:Is this variable "fixed" for the whole project?对于整个项目,这个变量是否“固定”?
【发布时间】:2013-10-09 09:38:13
【问题描述】:

我在一个 .NET 4.0 WebForms 中,在一个类中我有这个变量:

public static readonly string twitter_aggrega_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture)));
public static readonly string twitter_aggrega_timestamp = Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds).ToString(CultureInfo.InvariantCulture);

由于我无法将它们设置为const,我想知道它们是否可以在此过程中以某些方式“改变”。 .NET 如何管理它们?是否可以在应用程序的某个时间点访问它,然后在一些“滴答”之后获得两个不同的值?

我在整个过程中都需要它们,但每次过程开始时都不同。希望很清楚我想要实现的目标......

【问题讨论】:

    标签: c# .net webforms static


    【解决方案1】:

    static 变量在 AppDomain 的生命周期内都是有效的。只要您的应用程序保持打开状态,您的 static readonly 变量就永远不会改变.. 除非您在 static 构造函数中更改它们。

    【讨论】:

    • 但是它们是什么时候建成的呢?该过程何时开始?还是每次我打电话给他们都是“计算出来的”?
    • 它们在未确定的时间初始化。 static 初始化取决于实现。但是,可以保证它们在第一次在应用程序中使用之前被初始化。
    • 好的,所以在时间 X 和 X+1 调用这些变量意味着我将始终得到相同的值,即使它们固定为 Ticks 时间。我需要什么;)
    • 正确。它们不是每次都重新计算。只有一次.. 但那一次发生的时间是不确定的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    相关资源
    最近更新 更多