S2 第二本书 深入.NET平台和C#编程 总结 by天命

时间:2022-06-01 16:41:52

第一章 深入.NET框架

.NET框架 包含 CLR公共语言运行时 FCL框架类库

CLR(Common Language Runtime)公共语言运行时
CLS(Common Language Specific)公共语言规范
CTS(Common Type System)公共类型系统

FCL(Framework Class Library)框架类库
基本框架类(线程
ADO.NET XML类 文件IO类......
Web窗体 MVC WinForms

ADO.NET
SqlConnection SqlCommand SqlDataReader SqlDataAdapter
DataSet

C#代码→C#编译器→Microsoft中间语言(MSIL)→CLR JIT编译器→平台专用代码
Java源代码→Java编译器→字节码文件→JVM(Java虚拟机)→平台专用代码


类库 一堆类的集合
使用泛型 System.Collections.Generic
对文件的基本操作 System.IO
对网络协议进行编程 System.Net
对数据库的访问 System.Data
开发Windows窗体 System.Windows.Forms
对GDI+基本图形的操作 System.Drawing
命名空间保存的是一批功能相似的类的集合

封装
自动属性会在底层生成匹配的似有字段
当有条件限制时,不可以使用自动属性替换常规属性


CLR的用途
CLR是所有.NET程序运行的换技能,是所有.NET程序都要使用的编程基础。所有.NET程序都受CLR监管和处理。这些操作包括进程内应用程序的加载,将IL语言转化为机器语言,异常管理,垃圾回收,加载程序集等。

class User
{
public string UID { get; set; }
public string PWD { get; set; }
public string Name { get; set; }
}
class Users
{
public static User[] u = new User[50];
public static string logUser;
}

使用实体类保存数据.

第二章 深入c#数据类型

结构体
一个业务中属性个数比较少且都是值类型,使用类可能引起内存浪费 为此提供了结构体Struct数据类型
(特殊的值类型)
public struct MyStruct
{
public int Age;
public void Show()
{
Console.WriteLine("MDZZ");
}
}
结构体是值类型
结构体可以有属性值和方法
用法和类没有区别
结构体可以不用new直接使用属性和方法
结构体中不能给字段赋初值,类可以
结构体中没有默认构造函数,也不能手动添加
所有的值类型都存储在栈上


见到new
调用构造 开辟空间 创建对象
构造 主要完成对成员变量初始化工作
1.方法名和类名相同
2.没有返回值(连void也不能有)
public class Dog
{
public string Name { get; set; }
public Dog(string Name)
{
this.Name = Name;
}
}
装箱和拆箱
将值类型转换为引用类型叫做装箱,反之叫做拆箱
装箱 int num = 0; Object o = num;
拆箱 int result = (int)o;

值传递和引用传递
public class Change
{
public void Do(int a, int b)
{
int temp = a;
a = b;
b = a;
}
}
在Main方法里的代码如下
Change c = new Change();
int a = 5;
int b = 10;
c.Do(a, b);
Console.WriteLine(a+" "+b);
Console.ReadKey();
运行结果: 5 10
值传递 开辟了新空间 所以Main方法中的a,b的值不会改变
ref int a,ref int b
ref a,ref b
Reference 引用
值传递无ref,分情况讨论
1.传递的数据类型是值类型,不会保留
2.若传递引用类型,永久保留
引用传递有ref,无论传递的数据类型是值类型或引用类型,,都会保留

值类型和引用类型变量的区别
1.值类型分配在栈上,引用类型分配在托管堆上。
2.值类型继承自ValueType类,引用类型不会。
3.值类型变量包含实例数据,引用类型变量保存了真实内容的引用地址
4.值类型不由GC(垃圾回收机制)管理,自动释放,效率比引用类型高
5.值类型不能被继承,引用类型可以被继承
6.值类型不能为null值,自动初始化为0,;引用类型默认为null


结构是值类型,类是引用类型
结构不能继承也不能被继承
值没有默认构造
结构体没有析构函数,类有析构函数
结构体可以不使用new初始化,但是类必须用

第三章 使用集合组织相关数据

1.以后开发中都会使用集合作为数据容器
2.非泛型集合
单列 ArrayList 双列 HashTable
3.泛型集合
单列 List<T> 双列 Dictionary<K,V>

array 数组 Hashtable双列集合 collection收集
dictionary 字典 generic 一般的,类的

数组:内存中开辟的一连串空间
集合:将一堆数据类型相同的数据放入一个容器内

单列:ArrayList
Add(Object):可以添加任何数据类型
引发问题:遍历时除非将但各元素的类型写成Object
Remove(真实的元素本身Object)
--根据索引删除:RemoveAt(int Index)
--集合中元素删除后 索引会自动维护

双列:Hashtable
1.他的元素和Add进去的顺序可能不一致
2.没有下标