首页 > 开发 > 综合 > 正文

C# 语言规范--1.7 类

2024-07-21 02:29:59
字体:
来源:转载
供稿:网友
   类声明定义新的引用类型。一个类可以从另一个类继承,并且可以实现多个接口。

    类成员可以包括:常数、字段、方法、属性、事件、索引器、运算符、实例构造函数、析构函数、静态构造函数和嵌套类型声明。每个成员都有关联的可访问性,它控制能够访问该成员的程序文本区域。有五种可能的可访问性形式。下表概述了这些形式。

    形式 直观含义
public
 不限制访问。
protected
 访问限于该成员所属的类或从该类派生来的类型。
internal
 访问限于此程序。
protected internal
 访问限于此程序或从该成员所属的类派生的类型。
private
 访问限于该成员所属的类型。

示例

using system;
class myclass
{
   public myclass() {
      console.writeline("instance constructor");
   }
   public myclass(int value) {
      myfield = value;
      console.writeline("instance constructor");
   }
   ~myclass() {
      console.writeline("destructor");
   }
   public const int myconst = 12;
   public int myfield = 34;
   public void mymethod(){
      console.writeline("myclass.mymethod");
   }
   public int myproperty {
      get {
         return myfield;
      }
      set {
         myfield = value;
      }
   }
   public int this[int index] {
      get {
         return 0;
      }
      set {
         console.writeline("this[{0}] = {1}", index, value);
      }
   }
   public event eventhandler myevent;
   public static myclass operator+(myclass a, myclass b) {
      return new myclass(a.myfield + b.myfield);
   }
   internal class mynestedclass
   {}
}
    显示了一个类,它包含了具有各种可访问性的成员。示例

class test
{
   static void main() {
      // instance constructor usage
      myclass a = new myclass();
      myclass b = new myclass(123);
      // constant usage
      console.writeline("myconst = {0}", myclass.myconst);
      // field usage
      a.myfield++;
      console.writeline("a.myfield = {0}", a.myfield);
      // method usage
      a.mymethod();
      // property usage
      a.myproperty++;
      console.writeline("a.myproperty = {0}", a.myproperty);
      // indexer usage
      a[3] = a[1] = a[2];
      console.writeline("a[3] = {0}", a[3]);
      // event usage
      a.myevent += new eventhandler(myhandler);
      // overloaded operator usage
      myclass c = a + b;
   }
   static void myhandler(object sender, eventargs e) {
      console.writeline("test.myhandler");
   }
   internal class mynestedclass
   {}
}
    显示了这些成员的用法。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表