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" );
- }
- }
时间换算
//定义获取时间函数,返回值为字符串
pubilc string getTime(int t)
{
//计算小时,用毫秒总数除以(1000*60*24),后去掉小数点
int hour = t/(1000*60*24);
//计算分钟,用毫秒总数减去小时乘以(1000*60*24)后,除以(1000*60),再去掉小数点
int min = (t - hour*(1000*60*24))/(1000*60);
//同上 int sec = (t - hour*(1000*60*24) - min*(1000*60))/1000;
int msec = t - hour*(1000*60*24) - min*(1000*60) - sec*1000;
//拼接字符串
strint timeString = hour.toString() +":"+ min.toString() +":"+ sec.toString() +":"+ msec.toString();
return timeString;
}
//定义获取时间函数,返回值为字符串
pubilc string getTime(int t)
{
//计算小时,用毫秒总数除以(1000*60*24),后去掉小数点
int hour = t/(1000*60*24);
//计算分钟,用毫秒总数减去小时乘以(1000*60*24)后,除以(1000*60),再去掉小数点
int min = (t - hour*(1000*60*24))/(1000*60);
//同上 int sec = (t - hour*(1000*60*24) - min*(1000*60))/1000;
int msec = t - hour*(1000*60*24) - min*(1000*60) - sec*1000;
//拼接字符串
strint timeString = hour.toString() +":"+ min.toString() +":"+ sec.toString() +":"+ msec.toString();
return timeString;
}