博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[最近学习]面向对象读书笔记(二)
阅读量:6979 次
发布时间:2019-06-27

本文共 1605 字,大约阅读时间需要 5 分钟。

今天又读了一本"Visual C#.NET 技术内幕"的第一部分,有几点对昨天的""有意义的补充,现列出如下:

1. 常量:

数量的值仅可在编译时指定,平时不允许更改,常量并不占用对象的空间,而被编译到需要该常量的可执行代码中。故无法对const前加static的修饰符,它们实际上并不与任何具体的对象有关联。

2. 构造函数:

构造函数寝值设定项不能访问this指针,因为此时this对象还没有创建好.
初始化的顺序:
a. 初始化全部静态字段;
b. 调用静态构造函数
c. 初始化全部实例字段
d. 调用实例构造函数
故需要先对静态的字段进行赋值

3. 虚方法:如public virtual void Bite(){..;}

如果该类的派生类用了new public Bite(){..} (请注意new关键字),在一个方法被声明为new时,编译器将会被告知此方法不会参与到对虚方法的搜索中来,因此即使基类中增加了一个新的虚方法,现有代码也会继续正常工作。

internal的访问级别表示仅可访问封装该成员的程序集内部的类

4. 强制类型转换:

Type1 Type2 _m = (Type2)_m;
在将子类赋给基类引用时,不需要进行强制类型转换,因为子类总是可以取代基类,但相反的过程不成立 -> 即ZteGir继承了DataGrid,则_zgr可以强制转换为DataGrid,但相反则不可以。(当然不可以 - -!谁知道老爸有多少个儿子呢)
除了这种强制转换,还可以as关键字,可以尝试性的进行类型转换而不会引发类型转换的异常(InvalidCastException),如:
ZteGrid _zgr; //ZteGrid继承DataGrid
DataGrid _dgr = _zgr as DataGrid;
//但是其后必须(是必须)判断_dgr被转换的对象是否为null,因为as关键字即使转换失败也不会引发异常,而只是赋予引用一个null,从而可以根据程序来进行捕获
if (_dgr != null){
 ..
}

5. 结构: struct

结构是一种聚合类型,它将多个不同类型的成员组合为一种新的类型。
1). 结构不能被继承,不能继承类和其它结构,但它可以继承接口;
2). 与类的实例不同的是,永远不会在堆中为结构的实例分配内存空间,它们是从堆栈分配内存的。(?堆是何概念? 与堆栈有啥区别)
3). 结构也能有成员函数与构造函数,但注意:结构的构造函数必须包含至少一个参数
4). 结构不允许声明析构函数

6. 枚举:可以避免未强类型的错误,我们可以将session,权限串,类型等写在枚举类里,用Color.Red这样来进行强类型取值。是一种良好的编程习惯。

    枚举项的值是基于int的,且默认从0开始,我们也可以用指定第一个项的值来指定枚举值的开始边界.

7. 获取类型信息:

    is: 检测是否为指定,返回boolean常量 > if (obj is DataGrid){}
    typeof: 检测类型信息,返回System.Type对象 > DataGrid _grid = typeof(DataGrid);
   sizeof: 检测值类型的大小,引用类型的大小无法测定(因其相当于一个函数指针) > int size = sizeof(DataGrid);
  
8. 运算符重载:须成对进行重载,比如你重载了 ==和!= 但没重载Object.Equals和Object.GetHashCode方法,编译器会报警告。
    Object.Equals用来检验引用是否相等(注意会检验引用喔!而不只是值的相等性)
    Object.GetHashCode()是一个哈希运算符组,它能使哈希表和其他类似的集合数据类型正确分配。哈希函数用于快速生成一个与对象的值相对应的数字(HashCode)

转载地址:http://ssupl.baihongyu.com/

你可能感兴趣的文章
集群概述及原理笔记(1)
查看>>
主动防病毒内容篇
查看>>
无准备,不编程——计算机达人成长之路(15)连载
查看>>
服务器监控--cacti中英文版安装全解
查看>>
Nginx+Tomcat实现反向代理与动静分离
查看>>
WSUS Troubleshooting guide
查看>>
在SQL中使用CRL函数示例
查看>>
ATLAS入门篇之CascadingDropDown控件编程
查看>>
《从零开始学Swift》学习笔记(Day 47)——final关键字
查看>>
linux下磁盘镜像软件DRBD的使用
查看>>
snort源码的详细分析
查看>>
揭开Annotation的面纱
查看>>
使用DPM2007备份还原Exchange2007邮箱数据库
查看>>
zabbix企业应用之监控oracle
查看>>
FOSCommentBundle功能包:设置Doctrine ODM映射
查看>>
[Web 开发] 定制IE下载对话框的按钮(打开/保存)
查看>>
无法访问D盘,执行页内操作时的错误
查看>>
我的家庭私有云计划-13
查看>>
转载:什么才是程序员的核心竞争力
查看>>
android:关于主工程和library project
查看>>