刚才突然想到C#里面应该支持中文编程,因为他支持源代码的Unicode,于是用中文写了一个小程序,看看能不能编译执行,结果果然如我所料,可以执行,虽然代码实用价值没有,但是很有趣味。我想用这样的小程序教一个中国学生学面向对象,可能门槛会更低一些,而且也有趣的多,毕竟是母语。(稍作修正,直接用运行时类别鉴定来决定"我是谁")
程序的源代码是:
using System;
namespace 中文编程
{
public class 生物
{
public virtual void 自我介绍()
{
Console.WriteLine( "我是...咦?我是什么?我也不知道我是什么,反正我是一个"+this.GetType().Name );
}
}
public class 动物 : 生物
{
protected string 移动方式;
protected string 量词 = "只";
public 动物()
{
移动方式 = "移动";
}
public virtual void 移动()
{
Console.WriteLine( "这"+量词+this.GetType().Name+"在自由自在的"+移动方式 + Environment.NewLine );
}
public override void 自我介绍()
{
Console.WriteLine( "我属于"+this.GetType().BaseType.Name+", 我是一"+量词+"可爱的"+this.GetType().Name );
}
}
public class 鸟 : 动物
{
public 鸟()
{
移动方式 = "飞翔";
}
}
public class 鱼 : 动物
{
public 鱼()
{
移动方式 = "游来游去";
量词 = "条";
}
}
public class 马 : 动物
{
public 马()
{
移动方式 = "奔跑";
量词 = "匹";
}
}
sealed public class 运行
{
[STAThread]
static void Main(string[] args)
{
生物[] 动物园 = new 生物[5];
动物园[0] = new 鸟();
动物园[1] = new 鱼();
动物园[2] = new 马();
动物园[3] = new 动物();
动物园[4] = new 生物();
foreach( 生物 小生物 in 动物园 )
{
小生物.自我介绍();
if( 小生物 is 动物 )
{
((动物) 小生物).移动();
}
}
}
}
}
这个程序的执行结果是:
我属于动物, 我是一只可爱的鸟
这只鸟在自由自在的飞翔
这条鱼在自由自在的游来游去
我属于动物, 我是一匹可爱的马
这匹马在自由自在的奔跑
这只动物在自由自在的移动