对象、类和结构概述

概述

对象、类和结构具有以下特点:

  • 对象是给定数据类型的实例。在执行应用程序时,数据类型为创建(或实例化)的对象提供蓝图。

  • 新数据类型是使用类和结构定义的。

  • 类和结构(包含代码和数据)组成了 C# 应用程序的生成块。C# 应用程序始终包含至少一个类。

  • 结构可视为轻量类,是创建用于存储少量数据的数据类型的理想选择,不能表示以后可能要通过继承进行扩展的类型。

  • C# 类支持继承,这意味着它们可以从先前定义的类中派生。

Class (类)

public class Customer { //Fields, properties, methods and events go here... }

class 关键字前面是访问级别,类的名称位于 class 关键字的后面。定义的其余部分是类的主体,用于定义行为和数据。类的字段、属性、方法和事件统称为“类成员”。

类继承
public class Manager : Employee {
    // Employee fields, properties, methods and events are inherited
    // New Manager fields, properties, methods and events go here...
}

当类声明基类时,为基类定义的所有类成员也成为新类的一部分。因为基类自身可能继承自另一个类,而后者又从另一个类继承,依此类推,最终类可能具有很多个基类。

  • C# 只支持单继承:类只能从一个基类继承实现。
  • 一个类可以实现多个接口。
  • 静态类(static class )是仅包含静态方法的密封类,不能被 new 实例化。
  • 可以将结构接口的定义拆分到两个或多个源文件中。每个源文件包含类定义的一部分.若要拆分类定义,请使用 partial 关键字修饰符,不可用于委托或枚举。编译时将对分部类型定义的属性进行合并。

    struct (结构)

    public struct PostalAddress { // Fields, properties, methods and events go here... }
    
    

    结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:

    • 尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。

    • 结构不能声明默认构造函数(没有参数的构造函数)或析构函数。

    结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。结构不能从类或其他结构继承。

    结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个值类型实例是无法区分的。C# 中的所有值类型本质上都继承自 ValueType,后者继承自 Object。

    结构概述

    结构具有以下特点:

    • 结构是值类型,而类是引用类型。

    • 向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。

    • 与类不同,结构的实例化可以不使用 new 运算符。

    • 结构可以声明构造函数,但它们必须带参数。

    • 一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。

    • 结构可以实现接口。

    • 在结构中初始化实例字段是错误的。

    • struct 类型适于表示 Point、Rectangle 和 Color 等轻量对象。

     

     

    posted @ 2009-08-11 16:23  幽灵湖  阅读(198)  评论(0编辑  收藏  举报