初探c#--12,13,14

作者: 依栏望海[17731168] 2000-10-31 15:30:06 修改 删除 [回复]

1。12 枚举(Enums)

枚举声明为一组属性相同的常量定义一个统一的类别名字。它常用于一些在编译时已知范围的常量。但这些常量的具体值要在执行时才能确定。比如,已知三原色是红蓝绿,它们同属于颜色。可以定义如下:

enum Color { 
        Red, 
        Blue, 
        Green 
} 

我们创建一个shape(形体)类,每一个形体都会有颜色。颜色是属于“shape”的属性。但具体的颜色就要在执行时才能决定:

class Shape 
{ 
  public void Fill(Color color) { 
    switch(color) { 
    case Color.Red: 
      ... 
      break; 
    case Color.Blue: 
      ... 
      break; 
    case Color.Green: 
      ... 
      break; 
    default: 
      break; 
    } 
  } 
} 

这个File方法地说明了如何将一种给定的颜色赋予shape类。枚举比起普通整数常量的优胜之处在于:它使得代码更容易阅读理解和更安全。枚举的常量可以由编译器决定。使用时编译器还可以检查它的有效性。枚举其实不是c#特有的。嘿嘿,我就不详细介绍喽。趁机投篮!如果有人感兴趣——自己看书!(为了避免香蕉吃的太多就介绍本书《c语言编程常见问题解答》清华1996。29.00人民币。虽然古老,俺在书店还能见到)

1。13 名字空间(Namespaces)

我们在前面已对namespace花了不少笔墨(俺都忘了该如何接上了!O.K.请大家看完再倒)。我们曾经说“i not like the hello world”。但是在程序中要经常说就会很累,如果要在别的代码中用就更繁了,这时可以用namespace搭救。我把第一个例子切开,代码如下:

namespace MyOpinion 
{ 
  public class Message 
  { 
    public string GetMessage() { 
      return "i dont like Hello world"; 
    } 
  } 
} 

如果我想用namespace建立一个自己的库,就要对我的自定义函数和类进行分类,并填入相应的namespace中。

如:

namespace Mylib.Csharp.MyOpinion 
{ 
  public class Message 
  { 
    public string GetMessage() { 
      return "i dont like Hello world"; 
    } 
  } 
} 

namespace是分等级的,“Mylib.Csharp.MyOpinion”其实是缩写,每个“.”后面的namespace都被它前面的包含。如果拆开:

namespace Mylib 
{ 
  namespace Csharp 
  { 
    namespace MyOpinion 
    {....} 
  } 
}  

然后,我们就可以用自己的库了:

using Mylib.Csharp.MyOpinion; 
class test 
{ 
  static void Main() { 
    Message m = new Message(); 
    System.Console.WriteLine(m.GetMessage()); 
  } 
} 

不过无论我们命名如何小心都会出现重名,即命名冲突。这时可以用别名来解决,比如上面的代码可以这样:

using MessageSource = Mylib.Csharp.MyOpinion; 
class test 
{ 
  static void Main() { 
    MessageSource m = new MessageSource(); 
    System.Console.WriteLine(m.GetMessage()); 
  } 
} 

1.14 属性(Properties)

关于属性就不用多说了。可能有点特别的是如何得到一个属性和设置一个属性。请诸位看下例:

public class Button: Control 
{ 
  private string caption; 
  public string Caption { 
    get { 
      return caption; 
    } 
    set { 
      caption = value; 
      Repaint(); 
    } 
  } 
} 

有了上面的定义,我们就可以对Button进行读取和设置它的Caption属性:

Button b = new Button(); 
b.Caption = "ABC";          // 设置 
string s = b.Caption;       // 读取 
b.Caption += "DEF”;        // 读取 & 设置
Contributors: FHL