一千萬個為什麽

搜索

如何演示靜態字段對應用程序域是全局的


如何編寫代碼(可能是2個應用程序)來訪問相同的靜態字段?因為它是app域的全球性

最佳答案

假設您正在尋找一個示例來證明設置靜態字段將保留您的類的所有實例中的值,那麽下面演示了Person.Age字段將是最後設置該值的實例的值,但是Person .Name字段將是當前實例的值:

public class Person
{
    public static int Age;
    public string Name;

    public Person( int age, string name )
    {
        Age = age;
        Name = name;
    }

    public void Speak()
    {
        Console.WriteLine( "My name is {0} and I'm {1} years old.", Name, Age );
    }

}

public class StaticDemo
{

    static void Main( string[] args )
    {
        var fizz = new Person( 25, "Fizz" );
        fizz.Speak();
        var buzz = new Person( 30, "Buzz" );
        buzz.Speak();

        var people = new List
        {
          fizz,
          buzz,
          new Person( 35, "Foo" ),
          new Person( 40, "Bar" ),
        };

        foreach( Person person in people )
        {
            person.Speak();
        }

        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine( "--done--" );
        Console.ReadLine();

    }

}



EDIT: links and reference added.

From MSDN static (C# Reference):

使用static修飾符聲明一個   靜態成員,屬於   鍵入自己而不是特定的   目的。靜態修飾符可以是   用於類,字段,方法,   屬性,運算符,事件和   構造函數,但不能使用   使用索引器,析構函數或類型   除了課程。

來自C#語言規範:10.4.5.1靜態字段初始化

靜態字段變量初始值設定項   一個類對應於一個序列   在...中執行的作業   它們出現在的文本順序   班級宣言。如果是靜態的   構造函數(第10.11節)存在於   類,執行靜態   字段初始化程序立即發生   在執行靜態之前   構造函數。否則,靜態   字段初始值設定項在a處執行   依賴於實現的時間   第一次使用靜態場   那個班。

轉載註明原文: 如何演示靜態字段對應用程序域是全局的

猜你喜歡