[英]Static property of inner static class of non-static class shared between instances of the non-static class?
一個例子值得一千個愚蠢的問題:
public class OuterClass
{
public static class InnerClassEventArgs : EventArgs
{
public static int SomeInt;
}
}
在遙遠的星系中:
public void SomeFunkyFunc()
{
OuterClass Instance1;
OuterClass Instance2;
Instance1.InnerClassEventArgs.SomeInt = 1;
Instance2.InnerClassEventArgs.SomeInt = 2;
//WHAT WOULD Instance1.InnerClassEventArgs.Someint == ?
}
是的,我現在意識到我輸入了這個,我幾乎編碼了所有我需要回答我自己的問題。 我寧願不創建一個新項目,如果比我更聰明的人知道他們的頭腦,那就不會遇到麻煩。
Instance1.InnerClassEventArgs.SomeInt
等於2.靜態字段在類的所有實例之間共享 - 或者如MSDN所示 :
靜態成員始終由類名訪問,而不是實例名。 無論創建了多少個類實例,都只存在一個靜態成員的副本。
請注意,您的特定示例將無法編譯 - 您將收到一條錯誤消息,指出“無法在非靜態上下文中訪問靜態類'InnerClassEventArgs'。”
您必須使用以下代碼,這有望使行為更容易理解:
OuterClass.InnerClassEventArgs.SomeInt = 1;
OuterClass.InnerClassEventArgs.SomeInt = 2;
靜態類只有一個實例,由它的所有用法“共享”(在你的例子中,是所有OuterClass的實例)。 因此,該對象的狀態將是任何用法所做的所有更改的總和。 在這個簡單的示例中,SomeInt將為2,無論您使用哪個OuterClass實例再次訪問它(Instance1或Instance2)。
我方便地忽略了以下所有內容:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.