C#高级编程技术知识点总结

C#高级编程技术知识点总结

1  .NET体系结构内容小结

1、什么是.NET框架?

.NET框架是.NET的基本体系结构和.NET平台的基础,该框架提供了具体的技术和服务。

2NET Framework 的组件

l      公共语言运行库(CLR)

l      .NET Framework 类库

l      ADO.NET——数据和 XML

l      XML Web Service

l      Web 窗体和服务

两个核心(重要)组件包括:公共语言运行库(CLR).NET Framework 类库

.NET Framework的核心:公共语言运行

3、公共语言运行库的组成

n        类加载器管理元数据、加载以及部署类

n        MSIL到本机代码编译器:JIT(Just In Time)编译器将MSIL转换成本机代码

n        代码管理器:管理代码的执行

n        垃圾回收器:.NET Framework下的所有对象提供自动生命期管理,即自动内存管理

n        安全引擎:通过用户标识和代码来源提供基于证据的安全机制

n        调试器:使开发人员可以调试应用程序并跟踪代码的执行

n        类型检查器:不允许不安全的类型转换和出现未初始化的变量,通过检验MSIL来确保类型安全

n        异常管理器:提供结构化的异常管理机制

n        线程支持:为需要多线程机制的应用程序提供多线程编程支持

n        COM封送拆收器:提供与COM之间的封送转换

n        .Net Framework类库支持:通过和运行时集成代码来支持Net Framework类库。

4.NET Framework类库的作用和特点

作用:供.NET托管程序使用的类型集合

特点:是面向对象的、是安全且易于扩充、一致的编程接口、跨语言继承和调试、但是不容易学习和掌握

5、托管代码的定义

.NET Framework中将在公共语言运行库的控制下运行的代码称为托管代码。 

2  托管执行环境的介绍

1、编译和运行.NET Framework应用程序

编译器选项

l        当使用命令行开关/t:exe/t:winexe /t:library时,C#编译器的输出结果将是一个程序集。这三个命令行开关得到的文件分别控制台可执行文件windows可执行文件DLL文件

2、程序集的组成要素

l        程序集清单,包含程序集元数据。

l        类型元数据。

l        实现这些类型的Microsoft中间语言(MSIL)代码。

l        资源集。

 在上面四个元素而言,只有程序集清单是必不可少的。

3、元数据的定义和作用

(1)定义:NET Framework中,元数据被称为“数据的数据”

(2)作用:加载和定位类、增强代码安全性、提供反射支持

4我们可以使用ildasm.exe工具来查看PE文件中的元数据以及任何托管模块中的MSIL代码。

5、命名空间和程序集

(1)命名空间的特点

命名空间能嵌套另一个命名空间  、在不同命名空间中,类型可以具有相同的名字、一个命名空间能在多个文件中定义 、单独一个源代码文件能定义多个命名空间

(2)命名空间和程序集的关系

一个程序集可以引用多个命名空间,一个命名空间也可以保存在多个程序集中

3  使用组件

1、在C#中,internal访问修饰符修饰的变量只能由当前程序集访问

2、当引用其他程序集时,应该使用/reference /r编译开关选项

3、创建组件的方法

l        使用命名空间和声明类

l        创建类的实现(方法、属性和事件等)

l        实现结构化异常处理

l        编译组件(csc /out:组件名.dll  /t:library xxxx.cs)

l        例如:实验二创建的组件

4  部署与版本控制

1、版本号的构成(能区分版本号是否兼容)

2、部署弱名称程序集在应用程序的子目录中,在配置文件中用probing子元素的privatePath属性指定应用程序加载私有程序集的路径,配置文件名是应用程序全名称加“.config”

5  对象和类型

1、类和结构

 (1)给方法传递参数(引用传递和值传递)

引用传递参数:在变量通过引用传递给方法时,被调用的方法得到的就是这个变量,所以在方法内部对变量进行的任何改变在方法退出后仍旧发挥作用

值传递参数:如果变量是通过值传送给方法的,被调用的方法得到的是变量的一个副本,在方法退出后,对变量进行的修改会丢失

(2)两个变量赋值(值类型变量赋值和引用类型变量赋值)

赋值:值类型通过拷贝赋值,默认通过值来传递参数,除非用ref关键字;引用类型通过引用赋值,可能出现几个引用指向同一个对象,引用类型用引用来传递变量

(3)结构和类的区别:结构是一种值数据类型,而类是一种引用数据类型

(4) 属性的作用:提供了向外部对象和代码公开数据值的一种方便方法

(5) System 空间下包含的Object对象是所有.NET 类的隐含基类

2、类型的使用

 (1)CTS架构(接口是惟一没有继承System. Object的类型 )

(2)Equals()方法

Equals( )方法

l      Equals( )返回Boolean值,它指定两个对象实例是否相等

l      该方法有两种形式:静态方法和实例方法

  说明:

对于值类型来说,Equals方法比较的是值;而对于引用类型来说,Equals方法比较的是引用,即对象在内存中的位置

 

7  数组和集合

1System.Collections命名空间

2集合遍历的思想和方法

思想:可以使用IEnumerable.GetEnumerator来返回一个枚举数,然后用这个枚举数来遍历整个集合

具体方法:

protected void Print(System.Collections.集合类型 list)

{

           IEnumerator enumerator=list.GetEnumerator();

           while(enumerator.MoveNext())

          {

            Console.WriteLine((string)enumerator.Current);

          }

}

3Queue类和Stack类的常用方法和应用举例

Stack类常用的方法

方法

说明

Push

将指定元素插入集合顶部

Pop

返回并删除集合顶部元素

Peek

返回集合顶部元素,但不删除该元素

Stack类的特点:指定以后进先出的顺序来访问元素

Queue类常用的方法

方法

说明

Enqueue

将指定元素添加到集合的结尾

Dequeue

返回并删除集合开始处的元素

Peek

返回集合开始处的元素,但不删除该元素

Queue类的特点:指定以先进先出的顺序来访问元素

4HashTable类和SortedList的常用方法和应用举例

(1) System.Collections命名空间中实现哈希算法的HashTable

(2)HashTable类的作用 :应用key/value的对应关系,返回集合中的特定对象

说明:添加元素时,第一个参数是键,第二个参数是数据;删除元素时,参数是键而非数据

Hashtable集合中,各个元素并不是按照添加的顺序存在于集合的内部的。在Hashtable集合中,key/value对根据键的哈希代码进行组织排序

(3) SortedList类是另外一种实现IDictionary的字典类型,除了与Hashtable同样可以经过key搜索集合中的对象外,它同时支持类似数组集合的索引搜索

说明

添加元素时,第一个参数是键,第二个参数是数据

mylist[]中的参数代表的是键

mylist.GetByIndex()中的参数代表的是索引

删除元素时,参数代表键值

SortedList集合中,key/value按键排序并可按照键和索引访问

8  委托和事件

1委托的概念及定义

2、如何使用委托(委托的定义和使用,多播委托)

(1)委托的定义形式 <modifiers>delegate<return_type><delegate_name>(argument_list);

说明:

Ø        委托声明定义一个类型,该类型封装了一个有一系列参数和返回值的方法

Ø        声明委托类似于方法的定义,但没有方法体,定义的前面加上delegate关键字

Ø        定义委托基本上是定义一个新类,可以在定义类的任何地方定义委托,并可以使用访问修饰符

(2)委托的使用

// 声明一个委托,该委托拥有一个只有一个字符串类型的参数且没有返回值的方法

public delegate void Del(string message);

//定义预委托的方法,该方法可以是静态的和实例的,只要预委托方法与委托具有相同的签//名即可  

Public void DelegateMethod(string message)//class Delclass

      {System.Console.WriteLine(message);}

//将委托实例与预委托的方法相关联

  Del handler=new Del(obj.DelegateMethod);

 Del handler=obj.DelegateMethod;

//调用委托,委托对象的名称后加上被小括号括起来的参数的方式来调用委托

Handler(Hello World);

(3)多播委托

事实上,委托不仅可以代表一个函数,还可以组合一堆函数,然后批量执行它们,这里体现了多播委托(委托链)的思想

利用+=向多播委托变量中增加委托方法、-=从多播委托变量中删除委托方法

3、如何使用事件(如何声明事件,事件中的运算符)

声明事件

.Net通过一个称作委托(Delegate)的技术来实现事,声明与事件关联的委托

声明事件:<modifier>event<event_type><event_name>;

说明:

事件声明与字段声明类似,但是事件声明必须使用event关键字

事件类型必须是委托类型,而且该委托类型必须至少具有和事件本身一样的可访问性

事件和方法一样具有签名,事件的签名通过事件类型中的委托类型来决定的

事件本质上相当于是一个委托变量。

 

9  内存管理

1值数据类型和引用数据类型的内存布局

值类型的实例使用栈上的内存;而引用类型的实例则使用托管堆上的内存

2.NET释放托管资源的方式:

(1)要求程序员编写托管程序时为对象分配内存,但在使用完毕后不必释放它

(2)另外我们也可以通过在程序中显式调用System.GC命名空间中的Collect方法,强制立即进行垃圾回收

3、释放未托管资源的方式

(1) 声明一个析构函数,但是析构函数的执行时间是不确定的,另外析构函数的执行会延迟对象最终从内存中删除的时间

(2) 在类中实现System.IDisposable接口中的Dispose方法

IDisposable接口可控制释放资源时间,但需要确保执行Dispose()方法

IDisposable接口支持显式资源管理

10  文件与I/O流以及序列化

1.NET以流的概念来处理IO的问题,相关的功能封装为类供应用程序引用。

2、所有与IO处理相关的类位于System.IO命名空间,包括:FileStream MemoryStream BufferedStream

注意:NetworkStream类位于System.Net.Sockets命名空间中

3使用FileStream打开一个文件时,FileMode参数可设置对文件覆盖、创建、打开等选项中的操作:

Create:指定创建一个新文件,如果已经存在一个同名文件,则旧文件被覆盖

CreateNew:定创建一个新文件并防止覆盖已存在的同名文件

4、定义一个可以被序列化的类的步骤

通过[Serializable]特性将该类标注为可被序列化的类,如果不想序列化类的某个字段时,可以在其前面加上[NonSerialized]特性

5、使一个类实现自定义的序列化的步骤

(1)类应该继承自Iserializable接口

(2)实现接口的GetObjectData方法

(3)并提供一个带 SerializationInfoStreamingContext 参数的构造函数

11  线程

1、线程对象的创建和启动

线程由Thread类创建的对象代表,Thread类构造函数的参数是一个ThreadStart委托类型的参数 ;当线程对象创建以后,调用Start()方法将其启动

举例:

Class MyThread

{

  //静态线程函数

  public static void ThreadMethod1()

  {  }

  //实例线程函数

  public void ThreadMethod2()

  { }

}

//将静态函数当作线程函数

Thread th1=new Thread(new ThreadStart(MyThread.ThreadMethod1));

//将实例方法当作线程函数

MyThread obj=new MyThread();

Thread th2=new Thread(new ThreadStart(obj.ThreadMethod2));

//当线程对象创建以后,调用Start()方法将其启动

th1.Start();

th2.Start();

2、背景线程

IsBackground属性为true的线程被称为背景线程

3、线程优先级

线程优先级,由Thread类的Priority属性标识。

4、线程同步

使用Monitor类控制线程同步时,用Monitor.Enter方法在指定对象上获取排他锁。

12  访问Internet

1、端口号的取值范围:0~65535

2TCPUDP协议的区别

(1)TCP是一种面向连接,保证可靠传输的协议

(2)UDP是一种无连接的协议,由于没有连接,也就不能保证服务器能接收到数据,但整体效果是传输比较快。

3、套接字的作用

套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元

4TcpClient类建立客户端程序的流程以及应用

 

 

 

 

 

 

 

 

 

 

 

 

 

5TcpListener类建立服务器端程序的流程以及应用

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6WebRequest类的常用方法

Create()——初始化一个新创建的WebRequest实例

Public static WebRequest Create(string strUriString)

13  远程处理和XML Web Service

1、信道和格式化程序

(1) .NET远程处理框架中,HTTP信道的默认格式化程序为SoapFormatter

(2) .NET远程处理框架中,TCP信道的默认格式化程序为BinaryFormatter

2、服务器端激活模式下服务器端应用程序开发

*       创建一个可以被远程访问的类

*       选择并注册信道

TcpChannel channel=new TcpChannel(12345);

ChannelServices.RegisterChannel(channel);

*       使用服务器端激活方式注册对象

RemotingConfiguration.RegisterWellKnownServiceType(typeof(Remot.HelloServer),

       "HelloWorld", WellKnownObjectMode.SingleCall);

 

3、服务器端激活模式下客户端应用程序的开发

*       选择并注册信道

TcpChannel channel=new TcpChannel();

ChannelServices.RegisterChannel(channel);

*       获得远程对象

HelloServer obj = (HelloServer)Activator.GetObject(typeof(Remot.HelloServer),

"tcp://localhost:12345/HelloWorld");

*       调用远程对象的方法

4、创建XML Web Service

(1) soap协议规定了Web Services之间传递信息的方式。

(2)Web服务项目的Web服务类定义中,某方法具有[WebMethod]特性,则该方法可以作为Web服务的一部分而被访问。

(3) 在使用ASP.NET开发的WEB服务时,WEB服务类必须派生自System.Web.Services.WebService

15  .NET数据访问及创建Windows应用程序

1ADO.NET架构的两个主要组件是Data ProviderDataSet

2、在ADO.NET开发中,常用对象的作用

(1)Connection对象进行数据库连接

(2)DataAdapter对象在数据集和数据库之间移动记录

(3)Command对象用来包含提交给数据库的信息。

(4)可使用DataReaderDataSet来从数据库中取得数据

3Fill方法可以将一个查询的结果填充到DataSet

4System.Windows.Forms命名空间中包含创建Windows窗体应用程序的类

5、常用控件的用法

(1)Label控件用来显示用户不可编辑的静态文本信息

(2)RadioButton控件的事件中,当Checked属性的值更改时CheckChanged事件会发生。

(3) GroupBoxPanel控件都是容器控件

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值