1.静态构造函数的执行
静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
代码
using
System;
public class A
{
public static int X;
static A()
{
X = B.Y + 1 ;
}
}
public class B
{
public static int Y = A.X + 1 ;
static B()
{
}
}
public class C
{
public static void Main()
{
Console.WriteLine( " X={0},Y={1} " , A.X, B.Y );
}
}
public class A
{
public static int X;
static A()
{
X = B.Y + 1 ;
}
}
public class B
{
public static int Y = A.X + 1 ;
static B()
{
}
}
public class C
{
public static void Main()
{
Console.WriteLine( " X={0},Y={1} " , A.X, B.Y );
}
}
2,1
静态构造函数具有以下特点:
-
静态构造函数既没有访问修饰符,也没有参数。
-
在创建第 一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。
-
无法直接调用静态构造函数。
![](https://i-blog.csdnimg.cn/blog_migrate/81178cc93a2a3bb5048d90d76e7ec935.gif)
public
abstract
class
A
{
public A()
{
Console.WriteLine( ' A ' );
}
public virtual void Fun()
{
Console.WriteLine( " A.Fun() " );
}
}
public class B : A
{
public B()
{
Console.WriteLine( ' B ' );
}
public new void Fun()
{
Console.WriteLine( " B.Fun() " );
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
{
public A()
{
Console.WriteLine( ' A ' );
}
public virtual void Fun()
{
Console.WriteLine( " A.Fun() " );
}
}
public class B : A
{
public B()
{
Console.WriteLine( ' B ' );
}
public new void Fun()
{
Console.WriteLine( " B.Fun() " );
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
结果是:
A
B
A.Fun()
因为B中是New, 如果是override重写这方法,则会
3
![](https://i-blog.csdnimg.cn/blog_migrate/81178cc93a2a3bb5048d90d76e7ec935.gif)
public
class
A
{
public virtual void Fun1( int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1( 1 );
Fun1( 5 );
}
}
public class B : A
{
public override void Fun1( int i)
{
base .Fun1(i + 1 );
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
{
public virtual void Fun1( int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1( 1 );
Fun1( 5 );
}
}
public class B : A
{
public override void Fun1( int i)
{
base .Fun1(i + 1 );
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
结果:
2
5
1
6