首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

幫忙看看執行結果,三種情況,三個結果?暈~高人指點迷津~解决方法

2012-01-14 
幫忙看看執行結果,三種情況,三個結果?暈~~高人指點迷津~~usingSystemclassA{publicstaticintXstaticA(){

幫忙看看執行結果,三種情況,三個結果?暈~~高人指點迷津~~
using   System;
class   A
{
        public   static   int   X;

        static   A()
        {
                X   =   B.Y   +   1;
        }
}
class   B
{
        public   static   int   Y   =   A.X   +   1;

        static   B()  
        {  
           
        }
        static   void   Main()
        {
                int   a   =   A.X;
                int   b   =   B.Y;
                Console.WriteLine( "X={0},Y={1} ",   a,   b);
        }
}
class   c
{
     
}
---------------------------------------
using   System;
class   A
{
        public   static   int   X;

        static   A()
        {
                X   =   B.Y   +   1;
        }

        static   void   Main()
        {
                int   a   =   A.X;
                int   b   =   B.Y;
                Console.WriteLine( "X={0},Y={1} ",   a,   b);
        }
}
class   B
{
        public   static   int   Y   =   A.X   +   1;

        static   B()  
        {  
           
        }
   
}
class   c
{
     
}
-----------------------------------
using   System;
class   A
{
        public   static   int   X;

        static   A()
        {
                X   =   B.Y   +   1;
        }

   
}
class   B
{
        public   static   int   Y   =   A.X   +   1;

        static   B()  
        {  
           
        }
   
}
class   c
{
        static   void   Main()
        {
                int   a   =   A.X;
                int   b   =   B.Y;
                Console.WriteLine( "X={0},Y={1} ",   a,   b);


        }
     
}
---------------------------------

[解决办法]
//參考以下文章http://dev.poptool.net/wangluo/asp.net/csharp/9754.html
/*
(1)用于对静态字段、只读字段等的初始化。       
(2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。    
(3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数
(4)静态构造函数是不可继承的,而且不能被直接调用。      
(5)如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。  
任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。 
(6)如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。
*/
/*以下代碼做了註釋*/
using System;
class A
{
public static int X;

static A()//這里面不能重復調用B的構造函數,因為構造函數只執行一次---------4
{
X = B.Y + 1;
Console.WriteLine( "static A() ");
}
}
class B
{
public static int Y = A.X + 1;//因為這邊用了A的變量,所以要先調用A的構造函數(4)-------3

static B()//執行這個靜態函數前,執行初始值设定(3)---------2
{
Console.WriteLine( "static B() ");
}
static void Main() //1入口,去調用這個類的構造函數(2)----1
{
int a = A.X;
int b = B.Y;
Console.WriteLine( "X={0},Y={1} ", a, b);
Console.ReadLine();
}
}
class c
{

}

热点排行