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() { Console.WriteLine("{0}", Y); }
static void Main()//程序入口点在这里提高了类B的优先级
{
Console.WriteLine("{0},{1}", A.X, B.Y);
Console.ReadLine();
}
}
程序入口点在类B中提高了类B的优先级,即先执行类B的public static int Y = A.X + 1;再执行其中A.X调用了 static A(),再执行构造函数static B() 所以结果为:
2
1, 2
程序入口点在类B外面:
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() { Console.WriteLine("{0}", Y); }
}
class C
{
static void Main()
{
Console.WriteLine("{0},{1}", A.X, B.Y);
Console.ReadLine();
}
}
此时,根据 Console.WriteLine("{0},{1}", A.X, B.Y); 先执行A.X即调用static A()而 X = B.Y + 1;中的B.Y调用了class B所以执行public static int Y = A.X + 1再执行static B() 然后执行 X = B.Y + 1;结果为:
1
2,1
若为:Console.WriteLine("{0},{1}", B.Y, A.X);先执行public static int Y = A.X + 1;其中A.X调用了static A()再执行static B() ,结果为
2
2,1
分享到:
相关推荐
描述继承中子类与父类构造函数,静态块的执行顺序
本文实例讲述了C#静态构造函数用法。分享给大家供大家参考。具体如下: 当我们想初始化一些静态变量的时候,就需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,...
当我们想初始化一些静态变量的时候,需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用。 现在碰到...
本篇文章主要是对C#中静态构造函数的几点说明进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,传入参数为两个Point类实例。然后设计一个测试类...
主要介绍了浅析C#静态类,静态构造函数,静态变量 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private) */ public class Test{ public Test(){ System.out.println("类Test构造方法被执行 6"); } { System.out.println("类...
主要介绍了C#中的私有构造函数和静态构造函数,是C#入门学习中的基础知识,需要的朋友可以参考下
模拟新闻NStatics 如何将Mockito与构造函数和静态函数一起使用的示例
一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,...
复制构造函数引用this指针静态成员.ppt
C# MVC默认的实例化控制器时是调用不带参数的构造函数,但是使用castle注入进行构造注入构造函数带参。
C_语言静态变量和静态函数,可以让您对C语言静态变量和静态函数有更清晰的认识
Java的静态代码块、非静态代码块、构造函数的简单的java代码
4.私有构造函数:则无法通过该构造函数实例化该对象,可通过调用静态函数来实例化;当仅用作某些静态成员或属性的容器时,可定义私有构造函数来防止被实例化; 一般的构造函数都是实例构造函数,只要创建实例,就...
今天花了一些时间把静态构造函数的用法总结了一下,希望高手们指点。谢谢