C#入门经典第8版 第十章 定义类成员

本文详细介绍了C#中成员的定义,包括public、private、internal、protected等访问修饰符的用法,以及static、readonly、const字段的定义。同时,讨论了virtual、abstract、override方法的重写与抽象,以及属性的get和set块,强调了C#6引入的表达式属性和元组。此外,提到了重构、隐藏基类方法、嵌套类型以及访问控制的重要性。
摘要由CSDN通过智能技术生成

定义成员

普通的修饰词我便不解释了 有 public private internal(接口是Interface) protected 其中private默认不写修饰词默认是这个其中接口除外 接口成员都是公共的 且不能有修饰符,其中有 protected internal 受保护的内部成员。也可以使用static静态修饰字段属性方法,含义就是将成员修饰为静态的,而并非对象实例的成员

定义字段

定义字段中的readonly 含义是修饰字段时是将当前的字段修饰为只读字段,只能在执行构造函数的过程或者声明的时候赋值。仅两种情况另外还有const关键字 来创建一个常量 。const成员也是静态的 所以不需要Static 修饰

定义方法

方法定义当中也可以使用下列关机键

关机字及用处

作用

Virtual 定义虚构函数

它能由子类重写

absstrct定义抽象函数

必须由非抽象的派生类重写(抽象成员只在抽象类当中)

Override重写关机键

方法重写了一个基类方法必须使用该关键字

extern代表外部成员

方法定义在其他地方

小tips:

当重写了某个基类的方法不想再由子类能重写 可以使用sealed来指定派生类不能再重写该方法。

定义属性

属性当中由get set块 get是程序再读取当前属性的值时触发get块 get块必须由一个属性同类型的返回值简单的属性就是返回当前私有字段。Set块就是程序在对当前属性进行设置赋值的时候 触发set块 一般是将Value 赋值给字段 Value 就是代表用户提供的属性值。可以在属性设置时设置非空处理如下实例代码

  1. private int? myVar;//不理解  和??后面章节笔记会提到
  2. public int? MyProperty
  3. {
  4.     get { return myVar; }
  5.     set { myVar = value ?? 0; }//set  我们提到它时程序赋值给属性值触发
  6. }

还可以在属性set中做很多值处理 如只需要5-10的数字 否则 附上默认值。或抛出异常

If(value>0){……}

示例判断不满足抛出异常

属性可以使用virtual、override、abstract例如

这样修饰后设置的值就将只能是派生类和当前类的代码才能访问。

C#6当中引入“基于表达式的属性“

元组析构 P163 ★*

附录:

重构成员

重构标识通过工具修改而不是手动修改如下图

自动属性

     通过快速创建属性不写字段以及get 和set块 如下。我们没有提供字段以及代码块,编译器会自动添加字段,以及get 和set块代码(基础形式代码块 return ——字段  字段=Value)能节省空间但右不减需求。我们还可以在缩短为1行 如下10-2

  1.    public string K
  2.         {
  3.             get;
  4.             set;
  5.         }
  1.    public int K { getset; }

              10-2简写示例

隐藏基类方法

通常在下面的情况当中我们需要手动的标注为隐藏父类方法 如

                          修改前                                                                     修改后

 调用重写或隐藏的基类方法

   this 关键字与base一样也可以调用内部类成员,且this关键字还引用了当前对象实例。但不能直接this+.+静态成员 (原因:this是引用了当前对象实例)this使用场景 1:传递当前对象实例参数、2:限定为当前对象局部成员 (this.str str当前类中字段)

嵌套类型定义

    主要用来定义对其包含类来说是私有的类,名称空间的其他代码不能访问,嵌套类可以访问包括类的私有 和保护成员。如下10-5示例 如果您将Student 移除那么将会报错,原因就是打破了嵌套类型定义2是受保护以及私有您访问不到。

                                    10-5嵌套类型 示例

提示:

protected受保护的:可以在当前类的内部以及该类的子类中访问。(不能通过基类以及子类实例来访问)

private:私有的,只能在当前类的内部进行访问,出了这个类就访问不到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学软件开发的猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值