引用类型

来源:互联网 发布:人工蜂群算法 python 编辑:程序博客网 时间:2024/03/29 04:47

C#中的引用类型有四种:类、数组、代表和接口。 

1.类
         类是面象对象编程的基本单位,包括数据成员,函数成员的数据结构.类的数据成员有变量、域和事件。函数成员包括方法、属性、构造函数和析构函数等等。类和结构同样都包含了自己的成员,但他们之间最主要在于:类是引用类型,而结构是值类型。
        类支持继承机制,通过继承,派生可以扩展类的数据成员和函数方法,进而达到代码重用和设计重用的目的。 C#中两个经常用到的类是 object 类和 string 类。object 类是所有其他类型的基类,C#中的所有类型都直接或间接的从 object 类中继承。因此,对一个 object 的变量可以赋予任何类型的值。

2.数组
        数组是一组类型相同的有序数据,要得到该数组中元素的个数可以通过数组名加“.Length”来获得.
using System;
class test{
   static void Main()     {
        int[] arr1=new int[2];

        int[] arr2=new int[]{1,2,3};
        string[] arr3={"six"," is ","me"};
        int[,] arr4={{1,2},{3,4}};
        int[,] arr5=new int[3,4];
        for(int i=0;i<arr1.Length;i++)  {
              arr1[i]=i*i*i;
              Console.WriteLine("arr1[{0}]={1}",i,arr1[i]);
           }
        for (int i=0;i<4;i++)    {
             for(int j=0;j<3;j++)   {
                  arr5[j,i]=i*j;
                  Console.WriteLine("arr5[{0},{1}]={2}",j,i,arr5[j,i]);
                 }
           }
      }
 }               

3.代表
代表可以理解为指代,就是定义一种变量来指代一个函数或者一个方法
using System;

delegate int mydelegate(); 
class myclass { 
   public int InstMethod()    { 
      Console.WriteLine("Call the InstMethod."); 
      return 0; 
   } 

class Test 

   static public void Main() 
   { 
      myclass p=new myclass(); 
      mydelegate d=new mydelegate(p.InstMethod);  
      d(); //指代p.InstMethod
   } 
}

4.接口
接口描述了组件对外提供的服务。在组件和组件之间、组件和客户之间都通过接口进行交互。因此组件一旦发布,它只能通过预先定义的接口来处理合理的、一致的服务。
从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。接口(Interface)可以含有属性(Property)。接口的使用方法如所示。
using System;
namespace InterfaceTest{
 interface IPoint  {
   int x   {
    get;  
    set; 

  }
  int y   {
   get; 
   set; 
  }
 }
 class MyPoint : IPoint  {
  private int myX;
  private int myY;
  public MyPoint(int x, int y)  {
   myX = x;
   myY = y;
  }
  public int x  {
   get  {
    return myX;
   }
   set  {
    myX = value; 
   }
  }
  public int y {
   get {
    return myY; 
   }
   set {
    myY = value; 
   }
  }
 }
 class Class1{
  static void Main(string[] args){
   MyPoint p = new MyPoint(2,3);
   Console.Write("My Point: ");
   PrintPoint(p);
  }
  private static void PrintPoint(IPoint p) {
   Console.WriteLine("x={0}, y={1}", p.x, p.y);
  }

 }
}