讓我們用中文編程
剛才突然想到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 動物 )
{
((動物) 小生物).移動();
}
}
}
}
}
這個程式的執行結果是:
D:/Project/C#/MyTest/中文編程/bin/Debug>中文編程.exe
我屬於動物, 我是一隻可愛的鳥
這隻鳥在自由自在的飛翔 我屬於動物, 我是一條可愛的魚
這條魚在自由自在的遊來遊去
我屬於動物, 我是一匹可愛的馬
這匹馬在自由自在的奔跑 我屬於生物, 我是一隻可愛的動物
這隻動物在自由自在的移動 我是...咦?我是什嗎?我也不知道我是什麼,反正我是一個生物