在上一篇文章中,介绍了类如何封装程序中的对象.而实际中,出了类可以封装对象外,结构和枚举也可以封装一些对象,本文将着重介绍结构和枚举这两个知识点的相关应用.

 

一. 结构(Structure)

     什么是结构(Structure)?在C#里,Struct是一种值类型,通常用来封装小型相关变量组,和类有很大的相似度.同类一样,它不但可以包含不同数据类型数据。还可以包含复合类型(数组,结构,DateTime等等)除了以名字/值方式出现还可以有属性和方法,所以说结构是一种强大的复合型数据。

 

    1. 使用类封装对象的属性

      以图书来作为示例来分析,图书包括图书编号,图书名称,图书作者以及出售价格等.我们平时所通常都是使用类来封装这些信息,如下:

 1}

 

     2. 使用结构封装对象的属性

       其实出了使用类来封装,我们还可以使用结构来封装,实现如下:

 1}

 

    3. 结构可以定义构造方法

 1}

 

    4. 可以使用new进行初始化

 1}

 

    5. 结构可以实现接口

 1}

 

    6. 类和结构的区别

      从上面可以看出,无论是使用类还是结构,都可以用来封装对象的属性.当然出了相同点外,两者之间还是有很大的不同,大体如下:    

    C#编程利器之二:结构与枚举(Structure and enumeration) 类型:类是引用类型,结构是值类型.

    C#编程利器之二:结构与枚举(Structure and enumeration) 继承:类可继承,结构不能继承.结构不能继承其他的结构和类,或是被用作其他结构或类的基类.

    C#编程利器之二:结构与枚举(Structure and enumeration) 构造方法与析够函数:结构可以定义构造方法,但不能定义析够函数.类既可以定义构造方法,也可定义析够函数.

    C#编程利器之二:结构与枚举(Structure and enumeration) 对象创建:可以使用new进行初始化,或进行手工初始化.类和结构都可以.

    C#编程利器之二:结构与枚举(Structure and enumeration) 结构与接口:结构可以实现一个或多个接口. 如上:public struct BookComponent:IBook{  //....}.

    C#编程利器之二:结构与枚举(Structure and enumeration) 多态: 结构与接口之间是支持多态的.如上面的结构实现接口为例,多态:IBook book = new BookComponent();

 

二. 枚举(Enumeration)

     什么是枚举(Enumeration)?枚举可以理解为通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举说明中的标识符的次序一致的. 通常用于定义一些不变的序列,如一年四个季节,一礼拜为七天等等. 可以通过enum来定义(这里主要是针对C#语言的实现,其实在JAVA语言里也是通过enum来定义).

    

     1. 枚举的定义形式

        修饰符 enum 枚举名

        {

            标识符1,

            标识符2,

            ..........,

            标识符n

        }

       如下则为一个完整的枚举定义:

 1}

 

    2. 另类枚举定义(可以初始化值)

 1C#编程利器之二:结构与枚举(Structure and enumeration)==============以下为第一种定义方法==============
 2}

      如果不初始化值则从0开始,实际上面两种定义方式定义得到的都是一个效果.

 

   3. 对象的形式实现

      何为对象的形式实现呢? 其实这个很简单,也就是将需要枚举的标识定义在对象里,通过对象的特性将其封装.详细如下代码:

 1C#编程利器之二:结构与枚举(Structure and enumeration)public class SeasonOne
 2}

      以上的形式实现很简单, 不过好象已经偏离了"枚举(enum)",因为实现已经由枚举转向为了类(class)对象来实现了.定义一成员属性,通过构造方法初始化,在类里定义需要枚举的只读成员,通常不建议使用此方式来实现.  我们可以这样来测试:

1C#编程利器之二:结构与枚举(Structure and enumeration)class Program
2}

 

    4. Java中的枚举

       在与C#语言一样流行的JAVA中,枚举还存在着另类故事,作为一个面向对象的开发者或是既将成为面向对象的开发者的你,我想了解下另类语言的某些特性是有必要的.在JAVA中,枚举除了上面所介绍的相关功能外,还有其他的一些功能,下面将简单的介绍下这些功能的应用.

    C#编程利器之二:结构与枚举(Structure and enumeration) 枚举里定义抽象方法,标识符实现抽象方法

 1}

 

    C#编程利器之二:结构与枚举(Structure and enumeration) 枚举里定义属性字段和构造方法

 1}

 

    C#编程利器之二:结构与枚举(Structure and enumeration) 属性字段,构造方法及抽象方法并存

}

 

三. .NET Framework中的枚举基类

    在.NET Framework中枚举基类(Enum)是一抽象类,位于System命名空间下,继承了ValueType类和IComparable, IFormattable, IConvertible接口,这里以一个简单的文本编辑作为示例介绍下枚举在实际中的应用.

    简单文本编辑器示例运行图如下:

                                            C#编程利器之二:结构与枚举(Structure and enumeration)

     从上图很容易看出,此文本编辑器主要是用于设置字体样式,其实在实现这个简单文本编辑器的时候就是使用的字体样式枚举(FontStyle),FontStyle的源代码定义如下:

 1C#编程利器之二:结构与枚举(Structure and enumeration)// 摘要:
 2C#编程利器之二:结构与枚举(Structure and enumeration)//     指定应用到文本的字形信息。
 3C#编程利器之二:结构与枚举(Structure and enumeration)[Flags]
 4C#编程利器之二:结构与枚举(Structure and enumeration)public enum FontStyle
 5}

 

      要实现上图示的简单文本编辑器很简单,基本思路就是通过点击上面字体样式设置功能键,设置编辑区域的文本字体样式,这实现很简单.在此,我就直接把代码贴出来,有不清楚之处可从下面我提供的示例代码下载连接下载本文示例代码查看.

 1C#编程利器之二:结构与枚举(Structure and enumeration)private void SetStyle(object sender,EventArgs e)
 2}

 

本文就介绍于此,更多请关注本系列后续文章,本文示例代码下载 

 

注: 原创文章,转载请注明出处: http://beniao.cnblogs.com/http://www.cnblogs.com/   作者 : Beniao

 

相关文章:

  • 2022-12-23
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-07
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-26
  • 2021-10-24
  • 2022-12-23
相关资源
相似解决方案