• C#入门分享(五)——对象与类


        到目前为止,我们介绍了组成C#语言的主要模块,包括变量、数据类型和程序流语句 ,并简要介绍了一个只包含Main()方法的完整小例子。但还没有介绍如何把这些内容组合在一起,构成一个完整的程序,其关键就在于对类的处理。

    (一) 类与结构

        类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法。类定义了类的每个对象(称为实例)可以包含什么数据和功能。例如,如果一个类表示一个顾客,就可以定义字段CustomerID、 FirstName、LastName和Address, 以包含该顾客的信息。还可以定义处理在这些字段中存储的数据的功能。接着,就可以实例化表示某个顾客的类的对象,为这个实例设置相关字段的值,并使用其功能。




          结构与类的区别是它们在内存中的存储方式、访问方式(类是存储在堆(heap)上的引用类型,而结构是存储在栈(stack)上的值类型)和它们的一些特征(如:结构不支持继承)。较小的数据类型使用结构可提高性能。在语法上,结构与类非常相似,主要的区别是使用关键字struct代替class来声明。



         对于类和结构,都使用关键字new来声明实例,这个关键字创建对象并对其进行初始化:




         在大多数情况下,类要比结构常用得多。因此,我们主要讨论类。

    (二)类的数据成员与函数成员

          数据成员是包含类的数据——字段、常量和事件的成员。数据成员可以是静态数据。类成员总是实例成员,除非用static进行显式的声明。字段是与类相关的变量。 一旦实例化对象,就可以使用语法Object.FieldName来访问这些字段,例如:


         函数成员提供了操作类中数据的某些功能,包括方法、属性、构造函数和终结器(finalizer)、运算符以及索引器。

         (1)方法

          方法是与某个类相关的函数,与数据成员一样,函数成员默认为实例成员,使用static修饰符可以把方法定义为静态方法。声明方法代码如下:


         (2)属性

          属性(property)的概念是: 它是一个方法或一对方法,在客户端代码看来,它(们)是一个字段。

          在 C# 中定义属性,可以使用下面的语法:

        
         例如:



           在属性定义中省略set访问器,就可以创建只读属性。同理,省略get访问器可创建只写属性。

         (3)构造函数

            声明基本构造函数的语法就是声明一个与包含的类同名的方法 ,但该方法没有返回类型:

     

         一般情况下,如果没有提供任何构造函数,编译器会在后台创建一个默认的构造函数。这是一个非常基本的构造函数,它只能把所有的成员字段初始化为标准的默认值,这通常就足够了,否则就需要编写自己的构造函数。

         但注意 ,如 果提供了带参数的构造函数,编译器就不会自动提供默认的构造函数。


          一般使用this关键字区分成员字段和同名的参数。

          注意,可以把构造函数定义为private 或 protected,这样不相关的类也不能访问它们。

          而编写静态构造函数的一个原因是,类有一些静态字段或属性,需要在第一次使用类之前,从外部源中初始化这些静态字段和属性。

        (4)匿名类型

           前面讨论了var关键字,它用于表示隐式类型化的变量。var与new关键字一起使用时,可以创建匿名类型。匿名类型只是一个继承自Object且没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。例如:

     

            好,关于C#的类和对象就先介绍,相关内容还有很多,就当是抛砖引玉了,只有在实际的运用中才能够学到更多。下一篇博客将重点介绍面向对象的编程方法,即C#中的封装,继承与多态。

     

  • 相关阅读:
    hdu 4135 Co-prime (容斥定理)
    hdu 1509 Windows Message Queue (优先队列)
    poj 2104 K-th Number (划分树)
    hdu 1556 Color the ball (树状数组)
    海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践
    使用MaxCompute Java SDK运行安全相关命令
    使用MaxCompute Java SDK 执行任务卡住了,怎么办?
    老代码多=过度耦合=if else?阿里巴巴工程师这样捋直老代码
    日志服务Python消费组实战(三):实时跨域监测多日志库数据
    如何限制用户仅通过HTTPS方式访问OSS?
  • 原文地址:https://www.cnblogs.com/cht-inu/p/4456470.html
Copyright © 2020-2023  润新知