C#静态变量忘记了值

1 c#

这听起来有点奇怪,但我有一些代码(实际上是MS Blend的插件)在单元测试中运行完美,但在Blend中不起作用.

代码如下.

    private static volatile QWGUIRepository s_instance;

    public static void Initialize(IUnityContainer container, string themeuri)
    {
        lock (s_lock)
        {
            s_instance = new QWGUIRepository();
            QWRepository.Initialize(container);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在调试器中(在将它附加到Blend之后),我可以看到s_instance被初始化为一个值(之后不是null),但是一旦我离开该方法,"s_instance"将忘记它的值并且将为null.

有任何想法吗?

谢谢,安德烈亚斯

Jon*_*eet 7

两个猜测:

1)你的阅读AppDomain与你写的不同.静态变量的范围是AppDomain.如果您AppDomain.CurrentDomain在Initialize期间查看调试器,然后在尝试阅读它时,它们是否看起来像是同一个域?

2)您实际上已将s_instance声明为Initialize中的局部变量,并且未触及静态变量.希望情况并非如此,但你永远不会知道......