缘起
- 第一次想从图书馆借,竟然没有借到,后来到图书馆看书的时候,随意就看到有了,然后借回来了。
内容
chap1 准备工作
- 1.2 C#与.NET框架的关系
- C#代码最终会被编译为“中间语言”(Microsoft Intermediate Language)。这样VB或其它语言的源代码都可以编译为MSIL呢。
- 1.3 VS开发工具
- 这个得找专门的pdf看
- 1.4 创建第一个应用程序
- 代码编辑器左侧,黄颜色的比较突出的标记,告诉我们,哪些代码是我们自己输入的,VS所生成的代码是不带标记的,同时告诉我们,黄色的标记表示还没有保存。
- 黄色的标记,变成绿色,表示已经保存成功了。
shift+F5
是“停止调试”。- “解决方案资源管理器”窗口,一个应用程序项目包含了哪些文件
- P3
- 1.5 解决方案与项目的关系
- 一个解决方案至少包含一个项目。
- VS会把当前解决方案中最先创建的项目定义为启动项目。
- 在解决方案名称上右击“属性”(
Alt+Enter
)->“启动项目”->“单启动项目”
chap2 语法基础
- 2.1 代码的基本结构
- 程序的代码结构(命名空间 /类名 /静态Mian方法)
- 2.2 命名空间
- 使用命名空间是为了避免命名冲突。
- 引用命名空间
using
- 如果两个命名空间中都有T类,可以这样写
using na = A; na.T;
和using nb = B; nb.T;
- 在引入命名空间之前,读者要考虑目标命名空间的来源,如果不是本项目的,则要先引用目标命名空间所在的程序集,然后再用using语句来引入。
- 如果两个命名空间中都有T类,可以这样写
- using static指令
- 当静态类型被using static指令引入之后,在代码中访问静态类的成员时就不必输入类型的名称,而是直接输入静态类型的成员名称就可以了。
- 所谓静态类型,即它是基于类型本身,而不是类型实例。在调用静态类型的成员之前不需要进行实例化,可以直接访问类型的成员。
- 使用了
using static System.Console;
在代码中只能访问该类型的静态成员,不能访问实例成员(因为实例成员必须在类型实例化后才能访问)。
- 2.3 Main入口点
- 两个类中都有Main()方法时,选择其中一个作为应用程序的入口点。
- 【项目】->右击“属性”->选择一个作为“启动对象”。
- 两个类中都有Main()方法时,选择其中一个作为应用程序的入口点。
- 2.4 变量与常量
- 虽然有
var
关键字,但还是强类型。int x = default(int);
//int类型的默认值为0。- 代码在\第2章\Example_5。
- 变量的生命周期
- 常量
- 常量的值一旦声明后不能更改,命名方式是使用大写字母。
- 代码在\第2章\Example_6。
- 虽然有
- 2.5 命名规则
- 可以用中文来命名
- 2.6 运算符
- 代码在\第2章\Example_7 到 \Example_10。
- 2.7 流程控制
int []numbers = new int[]{2,50,22,9,17,85}; foreach(int n in numbers)
适合用来枚举如数组、列表、集合之类的数据结构中的元素,事先也不必准确知道元素的个数。- 代码在\第2章\Example_11 到 \Example_16。
- 2.8 写注释是个好习惯
- 文档注释以
///
开头的
- 文档注释以
- 2.9 基本的数据类型
- 所有类型都有一个共同的始祖Object类,任何数据类型都是从Object类直接或间接派生出来的。
- system.**的结构也对应着C#语言的相应的关键字。
- 2.10 不要错过《C#语言规范》文档
- 32位系统位于:
\Microsoft Visual Stuido 14.0\VC#\Specifications\2052
- 64位系统位于:
\Microsoft Visual Stuido 14.0\VC#\Specifications\2052
- 32位系统位于:
chap3 面向对象编程
-
3.1 类
- 字段:类(或结构)内部定义的一种变量。
- 属性:用于描述类的特征,它可以对字段进行封装。通常属性带有get和set访问器。
- 如果希望让属性可读,直接去掉set访问器即可,仅保留get访问器。
- 字段是真正存储数据值的变量,而属性只是一个对外公开的一个“窗口”,数据通过属性来传递。
public int MaxTaskNum => 500;
等价于public int MaxTaskNum get{return 500;}
=>
是Lambda表达式的符号,右边可以省略return关键字。
- 方法
- 调用方法时写上参数的名字
Add(b:5,a:3)
- 可选参数
void DoWork(string p1,string p2="abc"){}
- 调用方法时写上参数的名字
- 构造函数与析构函数
- 53
-
3.2 结构
- 只能声明带参数的构造函数,不能声明默认构造函数
- 结构不能进行继承和派生,但可以实现接口。从
System.ValueType
派生,结构是值类型。 - 结构在实例化时可以忽略new运算符,而类不可以。
- 在未使用new关键字实例化结构的前提下,只能调用其字段,而属性、方法等成员无法调用。
- 在结构中声明的字段,不能初始化。
-
3.3 引用类型与值类型 P59
- 引用类型
- 代码在\第3章\Example_2
- 引用类型
-
3.4 ref参数与out参数 P61
-
3.5 方法重载 +
-
3.6 静态类与静态成员
-
3.7 继承与多态
-
3.8 抽象类
-
3.9 接口
-
3.10 扩展方法
-
3.11 委托与事件
-
3.12 枚举
-
3.13 特性
-
3.14 数组
chap4 控制台应用程序
- 4.1 输出文本信息
System.Console
类公开一系列静态成员- Write()
- WriteLine();//会加换行符
- 代码在\第4章\Example_1
- 4.2 获取键盘输入
- Console类有三个方法
- Read()
- ReadKey()
- ReadLine()
- 代码在\第4章\Example_2 到 \Example_4
- Console类有三个方法
- 4.3 命令行参数 P131
- 代码在\第4章\Example_5
- 4.4 设置控制台窗口的外观
- 修改以下几个属性
Title
ForegroundColor
BackgroundColor
- 代码在\第4章\Example_6
- 修改以下几个属性
- 4.5 控制台窗口的大小和位置
- 代码在\第4章\Example_7
结束
- 参考的教材是周家安写的
- 2017-05-22看了4个番茄钟,整了第一版。