C#基础(1)

1.

using System;
class A
{
    public A()
    {
       PrintFields();
    }
    public virtual void PrintFields(){}
}
class B:A
{
    int x=1;
    int y;
    public B()
    {
       y=-1;
    }
    public override void PrintFields()
    {
       Console.WriteLine("x={0},y={1}",x,y);
    }
}

 

当使用new B()创建B的实例时,产生什么输出?

 

答:X=1,Y=0

当使用New创建B的实例时,因为B继承了A类,A的构造函数首先会被运行,但应当注意的是,虽然运行的是A的构造函数,但在A的构造函数中调用的函数首先是在B类中查找,因为PrintFields已被重写,所以最终运行B类中的PrintFields函数。

 

 2.什么是单例模式,写个运用单例模式的类

    Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接

    实例它

 

// Singleton pattern -- Structural example  
using System;

// "Singleton"
class Singleton
{
  // Fields
  private static Singleton instance;

 // Constructor
 protected Singleton() {}

 // Methods
 public static Singleton Instance()
{
  // Uses "Lazy initialization"
   if( instance == null )
     instance = new Singleton();

  return instance;
  }
}

/** <summary>
/// Client test
/// </summary>
public class Client
{
 public static void Main()
{
   // Constructor is protected -- cannot use new
   Singleton s1 = Singleton.Instance();
   Singleton s2 = Singleton.Instance();

   if( s1 == s2 )
     Console.WriteLine( "The same instance" );
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值