C图解教程第1-4章读书笔记

关键字:C#入门,基本概念,变量与常量,类的基本概念

  • 日常闲聊,我这又开了个新坑,开始看起C#的内容了,感觉C#跟Java还是非常的像,只是各种地方换了个名字。
  • 目前看到了第七章感觉看不下去了,说的太细了,可能等之后有了实际项目经历了再继续看,后面会陆续把写过的内容上传。

第一章 C#和.NET框架

  • MFC:Microsoft Foundation Class 微软基本类库

  • COM:Component Object Model 组件对象类型

  • CLR:Common Language Runtime 公共语言执行库,执行环境

  • CIL:Common Intermediate Language 公共中间语言

  • CLI:Common Language Infrastructure 公共语言基础结构,把所有NET框架的组件连结成一个内聚的,一致的系统。

  • BCL:基类库

    %E7%AC%AC%E4%B8%80%E7%AB%A0%20C#%E5%92%8C%20NET%E6%A1%86%E6%9E%B6%203835d564508844d182b1b6aee4ae7e7b/Untitled.png

执行时被编译成本机代码


第二章 C#编程概述

  • 编译命令:csc Simple.cs,csc指“C-Sharp编译器”。

  • 变量命名

    • 首字母不能放首位。
    • @只能放首位,但是不推荐。
    • 区分大小写。

    %E7%AC%AC%E4%BA%8C%E7%AB%A0%20C#%E7%BC%96%E7%A8%8B%E6%A6%82%E8%BF%B0%2076d478b84cd4442993f34d5190944fdd/Untitled.png

    C#关键字

    • 关键字不能在任何地方做名称,触发加@开头。
    • 关键字全部是小写。

2.6 语句

  • 块:块是由成对的大括号包围的多条语句序列,在语法上相当于一条语句。形式类似Java中的代码块。
  • 有些特定的程序结构只能使用块。

2.7 输出文本

  • System.Console.Write(“Hello”);//输出文本。
  • System.Console.WriteLine(“Hello“);//输出文本,再输出一个换行。

2.7.3 格式字符串

  • 输出语句中可以使用多个参数,第一个参数必须是字符串,字符串中的标记符号将会被后面的参数代替,后面的值可以是字符串 数字或其他类型。
  • 代替标记由一个整数和一对大括号组成,整数就是被替换的值的位置,从0开始。
1
2
Console.WriteLine("Two sample integers are {0} and {1}.",3,6);
Two sample integers are 3 and 6.
  • 替换标记和参数可以是任意数量,也可以多次使用同一个参数,但是要注意不要超过参数的长度,不会产生编译错误,但是会产生运行时错误。

2.7.5 格式化数字字符串

  • 在替换标记中可以使用参数来指定被替换数字的格式。

![%E7%AC%AC%E4%BA%8C%E7%AB%A0%20C#%E7%BC%96%E7%A8%8B%E6%A6%82%E8%BF%B0%2076d478b84cd4442993f34d5190944fdd/Untitled%201.png](E:\google\Export-3829bbda-2b9d-4fae-8f82-4dc14e17807c\C%23图解教程第四版读书笔记 8126ed47e6b34379989d7ff7d15347b8\第二章 C%23编程概述 76d478b84cd4442993f34d5190944fdd\Untitled 1.png)

格式说明符的语法

2.8 注释

  • 单行注释,双斜杠 //
  • 行内注释,/* xxxx */
  • 文档注释,///

第三章 类型存储和变量

  • C程序是一组函数和数据类型, C++是一组函数和类,C#是一组类型声明。(不懂,可能代表C#内皆是类)
  • 类型是一种模板,模板本身不是数据类型,但是它详细说明了该模板构造的对象的特征。
  • 类型由下面的元素定义:
    • 名称
    • 用于保存数据成员的数据结构
    • 一些行为和约束条件
  • short,int和long等类型称为简单类型,这种类型只能存储一个数据项。其他类型可以存储多个数据项,例如数组类型就可以存储多个同类型的数据项。
  • 一些类型可以包含许多不同类型的数据项,这些类型中的数据项个体被称为成员,并且与数组中使用数字来引用成员不同,这些成员有独特的名称。
    • 数据成员 保存了这个类的对象或者作为一个整体的类相关的数据。
    • 函数成员执行代码,函数成员定义类型的行为。
  • C#中有16个预定义类型,名称全部小写。

%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E7%B1%BB%E5%9E%8B%E5%AD%98%E5%82%A8%E5%92%8C%E5%8F%98%E9%87%8F%20a394507f46ee4d4fb1e0e5f1741dedc4/Untitled.png

预定义类型

3.6 用户定义类型

  1. 类类型 class
  2. 结构类型 struct
  3. 数组类型 array
  4. 枚举类型 enum
  5. 委托类型 delegate
  6. 接口类型 interface

3.7 栈和堆

3.7.1 栈

  • 栈是一个内存数据,是一个LIFO的数据类型,其中存储:
    • 某些类型变量的值
    • 程序当前的执行环境
    • 传递给方法的参数
  • 栈的特征
    • 数据只能从栈的顶端插入和删除。
    • 把数据放到栈顶叫做入栈 push。
    • 从栈顶删除数据称为出栈 pop。

3.7.2 堆

  • 堆是一块内存区域,堆中可以分配大块的内存用于存储某类型的数据对象,堆中的内存能够以任意顺序存入和移除。堆中的数据不能被显式的删除,GC会判断程序不再访问数据时删除。

%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E7%B1%BB%E5%9E%8B%E5%AD%98%E5%82%A8%E5%92%8C%E5%8F%98%E9%87%8F%20a394507f46ee4d4fb1e0e5f1741dedc4/Untitled%201.png

堆中的自动垃圾收集

3.8 值类型和引用类型

  • 数据项的类型定义了存储数据所需要的内存大小以及组成该类型的数据成员,还决定了对象在内存中的存储位置—栈或堆。
  • 值引用只需要一段单独的内存,用于存储实际的数据。
  • 引用类型需要两段内存,第一段存储实际的数据,总是位于堆中。第二段是一个引用,指向数据在堆中的存放位置。

%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E7%B1%BB%E5%9E%8B%E5%AD%98%E5%82%A8%E5%92%8C%E5%8F%98%E9%87%8F%20a394507f46ee4d4fb1e0e5f1741dedc4/Untitled%202.png

非成员数据的存储

%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E7%B1%BB%E5%9E%8B%E5%AD%98%E5%82%A8%E5%92%8C%E5%8F%98%E9%87%8F%20a394507f46ee4d4fb1e0e5f1741dedc4/Untitled%203.png

C#中的值类型和引用类型

  • 变量的使用需要先声明,这将在内存中开辟一片位置,在声明后可以进行初始化,无初始化的变量有一个未定义的值,在未赋值之前不能使用,使用会产生编译错误。
  • 一些类型的变量声明后没有初始化,那么会自动设为默认值,而一些不能。

%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E7%B1%BB%E5%9E%8B%E5%AD%98%E5%82%A8%E5%92%8C%E5%8F%98%E9%87%8F%20a394507f46ee4d4fb1e0e5f1741dedc4/Untitled%204.png

变量类型

  • 多变量声明:类型需要相同,名称用逗号分隔。
  • int var3 =7,var4,var5=3;

3.10静态类型和dynamic关键字

  • 在C#中每个类型都是在编译期确定的并且不能在运行期修改,这叫做静态类型,但是为了兼容Python等动类类型的语言,使用dynamic关键字来代表一个特定的C#类型,它在运行时解析本身。在编译时,编译器不会对dynamic类型做类型检查。

第四章 类的基本概念

  • 类是一种能存储数据并执行代码的数据结构,它包含数据成员和函数成员。
    • 数据成员 存储与类或类的实例相关的数据,模拟该类所表示的现实世界的特性。
    • 函数成员 它执行代码,模拟显式世界实物的功能和操作。
  • 声明类:class MyExcellentClass{ 成员声明 }
  • 字段声明:Type Identifier;例如 int MyField;
  • C#不能声明全局变量,所有字段都属于类型,并且必须在类型声明内部声明。

4.4.2 方法

  • 方法是具有名称的可执行代码块,可以从程序的很多不同地方执行,甚至从其他程序执行。
  • 当方法被调用时,它执行自己所含的代码,然后返回到调用它的代码并继续执行调用代码。有些方法返回一个值到它们被调用的地方。方法相当于C++中的成员函数。
  • 方法包括以下部分:
    • 返回类型 声明了方法返回值的类型,如果不返回值,那么返回类型为void。
    • 名称
    • 参数列表 有一对圆括号组成,其中包含参数。
    • 方法体 由一对大括号组成,其中是被执行代码。

4.5 创建变量和类的实例

  • 类的声明只是用于创建类的实例的蓝图,一旦类被声明,就可以创建类的实例。
  • 类是引用类型,需要为数据引用和实际数据都申请内存。
  • 数据的引用保存在一个类类型的变量中,所有要创建类的实例,需要从声明一个类类型的变量开始,如果没有初始化,值是未定义。
  • 创建对象和初始化例如:Dealer theDealer = new Dealer();
  • 类中的数据成员根据实例变化而变化,所以称之为实例变量。还有一种成员与实例无关,称为静态变量。第六章阐述。

4.8 访问修饰符

  • 访问修饰符合计修饰在字段或方法上。
    • 私有的 private
    • 公有的 public
    • 受包含的 protected
    • 内部的 internal
    • 受保护内部的 protected internal
  • 如果声明时不带访问修饰符,那么就是私有成员,只能从类的内部访问,其他类不能看见。
  • 使用private显式的修饰为私有,和隐式的没有区别,两种形式是等价的。
作者

liukun

发布于

2020-11-26

更新于

2021-04-15

许可协议