C#属性、结构体、索引器、泛型

来源:互联网 发布:雪人企业版是什么软件 编辑:程序博客网 时间:2024/06/05 03:46

原文地址:http://www.cnblogs.com/DreamOfLife/archive/2012/09/11/2680422.html


1.属性 – property

  属性的主要作用就是提供了灵活的机制来访问类的私有字段。属性的定义方式如下:

public class PropertyTest

{

       private int age;

       public int Age

       {

              get { return  this. age;}

              set {this. age = value;}

  }

}

  通过get、set对属性的值进行操作,体现了面向对象的封装性。

  set方法里的value 是一个隐藏的参数,表示当前需要设置的数据值。

  属性中get、set方法分别表示数据的可读、可写性质。可以设置为可读或可读写方式。


2.结构体

  结构体的声明需要使用关键字struct。结构体属于值类型,不需要堆分配内存空间。结构体的声明方式与类相似,有访问修饰符、struct、结构名和结构体四部分构成。

结构体的一些特点:

(1). 结构体的实例化可以不使用new 运算符。如 Point p; p.x…; p.y…来直接定义结构体中的数据对象。

(2). 结构体可以声明构造函数,但必须带有参数。

(3). 结构体不能从继承自其他的结构体或类,也不能作为基类。

(4). 结构体可以实现接口。


3. 索引器

  索引器允许类或结构的实例对象像访问数组元素一样进行索引。在定义的时候可以采用get 和set 方法,具体声明方式如下:

[访问修饰符] 数据类型 this [数据类型 变量名]

{

       get{};

       set{};

}

  索引器的使用一般是针对类的数组元素。


4. 泛型

泛型是C#2.0中引入的内容,主要是通过不适用具体的数据类型来实现类型安全的数据结构。泛型最显著的作用就是创建集合类。它具有的优点如下:

(1)避免了在运行中的强制转换或装箱拆箱操作带来的性能损失和风险。

(2)泛型是类型安全的。

在泛型的使用中,用一个通用的数据类型T来作为一个占位符,等待在对象实例化时才指定具体的数据类型带替代。

下面使用泛型来定义一个新的栈:

public class Stack<T>

{

       private T[] items;

       private int count;

       public Stack(int size)

       {

              items = new T[size];

              count = 0;

  }

public void Push(T x)

{

       item[count++] = x;

}

public T Pop()

{

       return items[count--];

}

}

在实例化该栈时,需要使用下面的语句:

Stack<int> stack = new Stack<int>(5);//表示定义了一个存放int型数据的栈

0 0
原创粉丝点击