簡體   English   中英

靜態類構造函數和靜態類字段的范圍

[英]Scope of static class constructor and static class fields

在一個解決方案中,我有2個控制台應用程序(Console1和Console2)。 這兩個應用程序都引用一個類庫(CL)。 CL包含一個靜態類(SC),該類包含按構造函數設置的字段。

我的問題是,是否在Console1內調用了靜態類,並且在第一次調用Console1的任何包含靜態方法的字段時調用了SC的構造函數,並且在SC內設置了字段。 現在,如果我同時(盡管獨立)運行Console2並訪問SC,則靜態類SC的確切范圍是什么? 從Console1內部發起的諸如調用其構造函數之類的任何更改是否會對在Console2中使用SC時的行為有任何影響?

范圍是AppDomain。

因為您有兩個單獨的進程,所以您有兩個單獨的AppDomain和靜態類的兩個單獨的“實例”。 沒有狀態共享-完全沒有。

如果Console1和Console2像兩個完全獨立的exe文件一樣獨立運行,則將再次調用SC構造函數,否則不會調用。

控制台1和2作為單獨的進程運行。 程序集是按進程(確切地說是每個應用程序域)加載的,每個程序集都會初始化靜態構造函數,等等。 因此,“程序集的運行實例”是完全獨立的。

您的問題可能與靜態類有關,但您得到的答案都將歸結為:如果您運行一個項目的兩個單獨的實例,則一個實例中使用的類將不會與另一個實例交互。 實際上,您可以運行同一項目的兩個實例,並且不會有任何問題。 它與運行Microsoft Word的兩個實例沒有什么不同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM