C#学习日记10

1.SqlHelper
解析:
[1]它是对ADO.NET数据库访问层的封装。
[2]SqlHelper用于简化重复的去写那些数据库连接[SqlConnection]、SqlCommand、SqlDataReader等。

2.System.IO.StreamWriter类
解析:实现一个System.IO.TextWriter,使其以一种特定的编码向流中写入字符。

3.StreamReader.BaseStream.Seek(n, SeekOrigin.Begin)
解析:Seek方法表示移动流的读取指针:
[1]第一个参数:表示指针位置
[2]第二个参数:SeekOrigin.Begin表示所提供的指针位置相对流的开始,使用SeekOrigin.Current相对当前位置,SeekOrigin.End相对流结束位置

4.公共语言运行库[CLR]
解析:
[1]把源代码编译为Microsoft中间语言[IL]
[2]CLR把IL编译为平台专用的代码[内部机器码]
[3]通常将在 CLR 的控制下运行的代码称为托管代码[managed code]

5.COM和COM+
解析:从技术上讲,COM和COM+并不是面向.NET的技术,因为基于它们的组件不能编译为IL(但如果原来的COM组件是用C++编写的,使用托管C++,在某种程度上可以这么做)。但是,COM+仍然是一个重要的工具,因为其特性没有在.NET中完全实现。另外,COM组件仍可以使用——.NET组合了COM的互操作性,从而使托管代码可以调用COM组件,COM组件也可以调用托管代码。在一般情况下,把新组件编写为.NET组件,大多是为了方便,因为这样可以利用.NET基类和托管代码的其它优点。

6.通用类型系统[CTS]
解析:CTS[Common Type System]定义了可以在中间语言中使用的预定义数据类型,所有面向.NET Framework的语言都可以生成最终基于这些类型的编译代码。在C#中编译器识别的每个预定义类型都映射为一个IL内置类型。
C#学习日记10_第1张图片
树形结构中的类型说明如下所示:
C#学习日记10_第2张图片

7.公共语言规范CLS
解析:公共语言规范[Common Language Specification,CLS]和通用类型系统一起确保语言的互操作性。CLS是一个最低标准集,所有面向.NET的编译器都必须支持它。因为IL是一种内涵非常丰富的语言,大多数编译器的编写人员有可能把给定编译器的功能限制为只支持IL和CLS提供的一部分特性。只要编译器支持已在CLS中定义的内容,这就是很不错的。

8.特性
解析:特性[attribute]是使用C++编写COM组件的开发人员很熟悉的一个功能[使用Microsoft的COM接口定义语言Interface Definition Language,IDL]。特性最初是为了在程序中提供与某些项相关的额外信息,以供编译器使用。

9.ildasm
解析:ildasm是一个基于Windows的实用程序,可以用于检查程序集的内容,包括程序集清单和元数据。程序集有两种类型:共享程序集和私有程序集。
[1]私有程序集:最简单的一种程序集类型。私有程序集一般附带在某个软件上,且只能用于该软件。附带私有程序集的常见情况是,以可执行文件或许多库的方式提供应用程序,这些库包含的代码只能用于该应用程序。
[2]共享程序集:其它应用程序可以使用的公共库。因为其他软件可以访问共享程序集,所以需要采取一定的保护措施来防止以下风险:名称冲突,程序集被同一个程序集的不同版本覆盖。

10.GAC
解析:程序集高速缓存。

11.WinCV
解析:WinCV是一个基于Windows的实用程序,可以用于浏览基类库中的类、结构、接口和枚举。

12.WCF
解析:
[1]通过基于Microsoft的技术,可以采用许多方式将数据和服务从一处移动到另一处。
[2]现在只有一种移动数据的方式–Windows Communication Foundation[WCF]。
[3]WCF允许建立好服务后,只要修改配置文件,就可以用多种方式提供该服务[甚至在不同的协议下]。
[4]WCF是一种连接各种系统的强大的新方式。

13.C#编译执行过程
解析:
C#学习日记10_第3张图片

14.C#预处理指令#warning和#error
解析:
[1]如果编译器遇到#warning指令,会给用户显示#warning指令后面的文本,之后编译继续进行。
[2]如果编译器遇到#error指令,就会给用户显示后面的文本,作为一个编译错误信息,然后会立即退出编译,不会生成IL代码。

15.#line指令
解析:#line指令可以用于改变编译器在警告和错误信息中显示的文件名和行号信息。这个指令用得并不多。如果编写代码时,在把代码发送给编译器前,要使用某些软件包改变键入的代码,就可以使用这个指令,因为这意味着编译器报告的行号或文件名与文件中的行号或编辑的文件名不匹配。#line指令可以用于恢复这种匹配。也可以使用语法#line default把行号恢复为默认的行号。

16.#pragma指令
解析:#pragma指令可以抑制或恢复指定的编译警告。与命令行选项不同,#pragma指令可以在类或方法上执行,对抑制警告的内容和抑制的时间进行更精细的控制。

17.Windows Installer
解析:Windows Installer是一个服务,负责管理在大多数Windows操作系统上安装、更新、修复和删除应用程序。

18.Mono
解析:Mono是主要在需要小型运行时使用的开放源、跨平台.NET实现。它是在Android、Mac、iOS、tvOS和watchOS上为Xamarin应用程序提供技术支持的运行时,主要针对内存占用少的应用程序。

19.UWP
解析:通用Windows平台。用于为物联网[IoT]生成新式触控Windows应用程序和软件的.NET实现。它旨在统一可能想要以其为目标的不同类型的设备,包括电脑、平板电脑、电话,甚至Xbox。UWP提供许多服务,比如集中式应用商店、执行环境[AppContainer]和一组Windows API[用于代替Win32[WinRT]]。应用可采用C++、C#、Visual Basic和JavaScript编写。使用C#和Visual Basic时,.NETAPI由.NET5和.NETCore及更高版本提供。

20.ToLookup索引式查找
解析:ToLookup扩展方法返回的是可索引查找的数据结构,它是一个ILookup实例,所有元素根据指定的键进行分组并可以按键进行索引。

21.OfType和Cast类型过滤与转换
解析:
[1]OfType用于筛选集合中指定类型的元素
[2]Cast可以把集合转换为指定类型,但要求源类型必须可以隐式转换为目标类型

22.operator和implicit或explicit关键字
解析:operator和implicit或explicit关键字分别用于定义隐式转换或显式转换。定义转换的类型必须是该转换的源类型或目标类型。可用两种类型中的任何一种类型来定义两种用户定义类型之间的转换。
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/user-defined-conversion-operators
说明:is、as和typeof运算符无法进行重载。

23.多播委托
解析:
[1]委托只是一种特殊类型的对象,它包含的只是一个或多个方法的地址。
[2]包含多个方法的委托称为多播委托。多播委托实际上是一个派生自System.MulticastDelegate的类,System.MulticastDelegate又派生自基类System.Delegate。System.MulticastDelegate的其它成员允许把多个方法调用链接为一个列表。

24.EventHandler
解析:它定义了一个处理程序,它返回void,接受两个参数。对于EventHandler,第一个参数必须是object类型,第二个参数是T类型。EventHandler还定义了一个关于T的约束,它必须派生自基类EventArgs。

25.委托EventHandler定义
解析:

public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e) where TEventArgs:EventArgs

你可能感兴趣的:(C#,C#,SqlHelper,CLR,CTS,CLS)