《C#从现象到本质》读书笔记(三)第3章C#类型基础(下)
《C#从现象到本质》读书笔记第3章C#类型基础(下)
常量以关键字const修饰。C#支持静态字段(类型字段)和实例字段。
无参属性的get方法不支持参数,而有参属性的get方法支持传入一个或更多参数,set方法支持传入两个或更多参数。
通过属性的封装,保留了它与外部交互的能力,又实现了一种可靠的读写机制。
static关键字只能用于类而不能用于结构。
不能显式地为结构声明无参数地构造函数。
静态构造函数的目的是为了安全地给静态成员赋值。
当创建第一个实例之前,堆上没有类型对象,所以要调用静态构造函数;引用静态成员之前,堆上也没有类型对象,而静态成员属于类型对象的一部分,所以也要调用静态构造函数。这两种情况的最终结果,都是堆上最终出现了一个类型对象。因为类型对象只需要建立一次,所以静态构造函数也只能运行一次。
对象类型(object类型)是所有其它类型的基类,C#中的所有类型都直接或间接地从object 类中继承。
静态构造函数只负责初始化静态成员,为类型对象的创建而服务。
在C#中,方法的调用方式有:
1)直接调用(实例方法则必须先要有一个实例)。2)反射调用。3)Calli调用。4)委托调用。5)异步调用。6)表达式调用。
C#的默认方式是按值传递,若传递对象是值类型,则按值传递之后,传递进方法的不过是值得副本而已,方法外部的对象不受影响。按引用传递之后,传递进方法的是值类型的地址,方法外部的对象会受影响。实际上,按引用传递是按值传递的一种特殊情况(引用是地址,地址也是值)。
ref需要事先赋值,而out必须在方法返回之前赋值。
Gettype方法可以获得对象指向的类型对象的类型。
一个对象是什么类型取决于它在初始化时,它左边的类型(编译时类型),而不是new后边所跟的类型(运行时类型)。
gettype返回运行时类型。
对象只具有编译时类型所具有的成员,如果强行去访问运行时类型的成员,会无法编译通过。
《C#从现象到本质》读书笔记(三)第3章C#类型基础(下)的更多相关文章
- Linux 读书笔记 三 (第二章)
一.学习目标 1. 理解二进制在计算机中的重要地位 2. 掌握布尔运算在C语言中的应用 3. 理解有符号整数.无符号整数.浮点数的表示 4. 理解补码的重要性 5. 能避免C语言中溢出,数据类型转 ...
- 《深入理解java虚拟机》读书笔记三——第四章
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local ...
- 《深入理解bootstrap》读书笔记:第4章 CSS组件(下)
十. 标签(.label类,label-xxx) 高亮一些标题部分. 1 2 3 4 5 6 <h1>HELLO<span class="label label-defau ...
- C#图解教程读书笔记(第4章 类:基础)
类成员包括数据成员和函数成员. 和C/C++不同,C#在类型的外部不能声明全局变量,所有的字段都属于类型,而且必须在类型声明内部声明. 和C/C++不同,方法没有返回默认类型,所有方法必须包含返回类型 ...
- 《C#从现象到本质》读书笔记(二)第2章 C#类型基础(上)
<C#从现象到本质>读书笔记第二篇 第2章 C#类型基础(上) 类型指的是集合{类,结构,接口,枚举,委托}中的任意一个成员.任何拥有某类型的值(value)称为某类型的一个实例(inst ...
- 【转载】MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
1. 在 Analysis Service 分析服务中,Cube (多维数据集) 是以一个多维数据空间来呈现的.在Cube 中,每一个纬度的属性层次结构都形成了一个轴.沿着这个轴,在属性层次结构上的每 ...
- 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化
第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...
- 《Android开发艺术探索》读书笔记 (3) 第3章 View的事件体系
本节和<Android群英传>中的第五章Scroll分析有关系,建议先阅读该章的总结 第3章 View的事件体系 3.1 View基本知识 (1)view的层次结构:ViewGroup也是 ...
- 《Linux内核设计与实现》读书笔记——第一、 二章
<Linux内核设计与实现>读书笔记--第一. 二章 标签(空格分隔): 20135321余佳源 第一章 Linux内核简介 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确 ...
随机推荐
- Java同步学习(持续更新)
在需要考虑线程安全性的场合,可以考虑以下五种方式来实现线程的安全性: 1.同步方法 即有synchronized关键字修饰的方法. 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, ...
- [TFS教程]TFS: Get Command
Get Command Visual Studio 2012 Gets (downloads) either the latest version or a specified version o ...
- 阿里云ECS配置iptables
在阿里云ECS安装flannel.docker.kubernetes后,在多个node运行docker run -it bash,然后ping互相的ip,发现docker容器间网络没通,发现宿主机的i ...
- react使用ant-design组件库
新建项目并引入组件 1,全局安装脚手架 npm install -g create-react-app 2,新建项目 create-react-app reactantd 3,安装组件 npm ins ...
- CSS之padding&margin
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python:带参数的装饰器,函数的有用信息
一.带参数的装饰器,函数的有用信息 def func1(): '''此函数的功能是完成的登陆的功能 return: 返回值是登陆成功与否(true,false) ''' print(333) func ...
- SpringMVC的工作流程、组件说明以及常用注解说明
1. SpringMVC处理流程 2. SpringMVC架构 2.1 框架结构 2.2 框架流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherSer ...
- Java内存管理之类似-Xms、-Xmx 这些参数的含义
1.堆内存分配:JVM 初始分配的内存由**-Xms** 指定,默认是物理内存的 1/64:JVM 最大分配的内存由**-Xmx** 指定,默认是物理内存的 1/4:默认空余堆内存小于 40% 时,J ...
- zookeeper 集群部署
参考: https://www.cnblogs.com/linuxprobe/p/5851699.html
- jqGrid基本用法与示例
转自:https://chuanlu.iteye.com/blog/1953544 一.jqGrid的基本用法 1.html页面 <!DOCTYPE html PUBLIC "-//W ...