C#枚举(Enums)

来源:互联网 发布:淘宝店铺销量查询 编辑:程序博客网 时间:2024/06/13 03:37
枚举声明为一组属性相同的常量定义一个统一的类别名字。它常用于一些在编译时已知范围的常量。但这些常量
的具体值要在执行时才能确定。比如,已知三原色是红蓝绿,它们同属于颜色。可以定义如下:*/

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”;        // 读取 & 设置