C#几个例子[静态构造函数,继承,虚方法]

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 );
    }
}

2,1

 

静态构造函数具有以下特点:

  • 静态构造函数既没有访问修饰符,也没有参数。

  • 在创建第 一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化

  • 无法直接调用静态构造函数。

 

执行shunxu1. 先static 变量初始化

2. 再static 构造函数

3. 实例化时先初始化非静态变量,后自动调用构造函数.

 

 

 

继承中new 和override 区别
  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();
        }
    }

结果是:

A

B

A.Fun()

因为B中是New,  如果是override重写这方法,则会

 

 3

代码
  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);
        }
    }

结果:

2

5

1

6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值