静态类构造函数和静态类字段的范围

时间:2013-02-05 11:11:39

标签: c# scope static-classes

我在一个解决方案中有2个控制台应用程序(Console1和Console2)。两个应用程序都引用类库(CL)。 CL包含一个静态类(SC),其中包含按构造函数设置的字段。

我的问题是,如果我在Console1中调用静态类,并且在第一次调用包含静态方法的任何Console1时调用SC的构造函数,并且在SC中设置字段。现在如果我同时运行Console2,虽然是独立运行,并且还访问SC,静态类SC的确切范围是什么?调用其来自Console1内的构造函数的任何更改是否与在Console2中使用时SC的行为有任何关系?

4 个答案:

答案 0 :(得分:3)

范围是AppDomain。

因为您有两个单独的进程,所以您有两个单独的AppDomain和两个单独的静态类“实例”。没有国家共享 - 根本没有。

答案 1 :(得分:1)

如果Console1和Console2像两个完全独立的exe文件一样独立运行,那么SC构造函数将再次被调用,否则它将不会被调用。

答案 2 :(得分:1)

控制台1和2作为单独的进程运行。每个进程加载程序集(每个app域都是精确的),每个程序集都会初始化静态构造函数等。因此,“程序集的运行实例”是完全独立的。

答案 3 :(得分:1)

您的问题可能与静态课程有关,但您获得的答案将归结为: 如果运行项目的两个单独实例,则一个实例中使用的类将不与另一个实例交互。实际上,您可以运行同一项目的两个实例,您将没有任何问题。 与运行两个Microsoft Word实例

没什么不同