“茴”字的幾種寫法——C#中靜態構造函數和靜態變量文字執行順序問題

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication2

{

 

    public class A

    {

        public static int X;

        static A()

        {

        X = B.Y+1;

        }

    }

    public class B

    {

        public static int Y;

        static B()

        {

        Y = A.X+1;

        }

    }

    class Program

    {

 

        static void Main(string[] args)

        {

 

            Console.WriteLine("X = {0},Y = {1}",A.X,B.Y);

            Console.Read();

        }

    }

 

}

Main方法是程序的入口,Console.WriteLine( "X={0},Y={1}", A.X, B.Y );中先訪問的是A.X,因爲X是靜態的成員所以在訪問X之前A的靜態構造函數必定已經執行完成,A的靜態構造函數中又訪問了B.X,同理在A的靜態構造函數中獲得B.Y的值之前B的靜態構造函數必定已經執行完成,由於在完成A的靜態構造函數中X=B.Y + 1的中途中執行流程跳到了B的靜態構造函數,所以此時A.X還是默認值0,接着在B的靜態構造函數被執行完成後得以在A的靜態函數中成功獲得B.Y,此時B.Y=A.X + 1=0+1=1,接着A.X=1+1=2
所以輸出的是X=2,Y=1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章