- C# 从入门到项目实践(超值版)
- 聚慕课教育研发中心
- 2817字
- 2021-03-24 02:36:14
4.3 其他常用类型
每台计算机的网络或者系统中,都会分配一个具有唯一性的标识符,它用来保证在同一时空中的所有机器都是唯一的;当用户对互联网的资源通过特定的协议进行交互操作时,也需要一个标识符,用于标识某一互联网的资源名称。在C#中还有许多用于设置日期和时间的方法,而这些功能都是通过特定的类来生成的。
4.3.1 日期和时间
在C#中,DateTime是一个包含日期、时间的类型,此类型通过ToString()方法转换为字符串,可根据传给ToString()的参数转换为多种字符串格式。DateTime调用ToString()传入的参数可分为制式和自定义两种。
1. 制式类型
制式类型就是系统自带的,传入特定的单个字符就可转换为系统已设定好的格式。
1)格式来源
用户可以在Windows系统的控制面板中选择“更改日期、时间或数字格式”选项,然后会弹出一个“区域”对话框,在该对话框中可以设置日期和时间的格式,如图4-8和图4-9所示。
图4-8 控制面板
图4-9 “区域”对话框
2)符号对照表
在调用ToString()进行转换时,许多转换方式都是通过短日期、长日期、短时间和长时间这4个分类进行组合,如表4-4所示列出了制式类型对应的格式符号。
表4-4 符号对照表
【例4-7】编写程序,通过使用DateTime这个类来获取当前的时间,并以标准模式输出。
(1)在Visual Studio 2017中,新建名称为“Project7”的文件。
(2)在代码编辑区域输入以下代码。
【程序分析】本例演示了如何获取当前系统的时间,并且通过标准格式符号,输出不同格式的日期。
在Visual Studio 2017中的运行结果如图4-10所示。
图4-10 符号对照表
2. 自定义格式类型
自定义格式类型是通过自由组合日期代码(y、M、d、h、m、s、f)来展示丰富的日期格式。如表4-5所示,列出了可被合并以构造自定义的模式。这些模式是区分大小写的。例如,识别“MM”,但是不识别“mm”。
表4-5 自定义模式
注意:用户在创建自定义模式时,长度至少为两个字符。
例如:
【例4-8】编写程序,通过使用DateTime这个类来获取当前的时间,并以自定义模式输出。
(1)在Visual Studio 2017中,新建名称为“Project8”的文件。
(2)在代码编辑区域输入以下代码。
【程序分析】本例通过各类自定义模式,输出当前系统的时间。
在Visual Studio 2017中的运行结果如图4-11所示。
图4-11 自定义模式
4.3.2 全局唯一标识符
全局唯一标识符(Globally Unique IDentifier),简称GUID。它的主要目的是产生完全唯一的数字。而GUID的唯一缺陷在于生成的结果串会比较大,所以在理想情况下,随机生成两个相同GUID的可能性是非常小的,但并不为0。通常平台会提供生成GUID的API。
1. 全局唯一标识符的特点
(1)一个GUID为一个128位的整数(16字节),在使用唯一标识符的情况下,用户可以在所有计算机和网络之间使用这一整数。
(2)GUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个x是0~9或a~f范围内的一个十六进制的数字。例如,337c7f2b-7a34-4f50-9141-bab9e6478cc8即为有效的GUID值。
(3)世界上的任何两台计算机都不会生成重复的GUID值。GUID主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
(4)在Windows平台上,GUID应用非常广泛,如注册表、类及接口标识、数据库,甚至自动生成的机器名、目录名等。
2. 在.NET中使用GUID
当Windows开发人员需要一个唯一数值时,他们通常使用到一个全局唯一标识符。微软采用GUID术语来表示这一唯一数值,而这一数值能够标识一个实体,例如一个Word文档。
在.NET Framework中的基本System类,包括GUID数值类型。除此之外,这一数值类型包含处理GUID数值的方法。通过使用NewGuid方法允许用户很容易地生成一个新的GUID。
【例4-9】编写程序,通过使用NewGuid方法,生成一个GUID。
(1)在Visual Studio 2017中,新建名称为“Project9”的文件。
(2)在代码编辑区域输入以下代码。
【程序分析】本例通过调用NewGuid方法,获取一个全局唯一标识符。
在Visual Studio 2017中的运行结果如图4-12所示。
图4-12 全局唯一标识符
4.3.3 统一资源标识符
在计算机术语中,统一资源标识符(Uniform Resource Identifier,URI)是用来标识资源名称的字符串。URI由指定具体的语法和相关的协议组成。其中最常见的一种URI的形式就是URL(Uniform Resource Locator,统一资源定位符),通常代表一个网址。不常见的应用是URN(Uniform Resource Name,统一资源名称),是URLs在识别特定命名空间机制的一个补充。
1. 统一资源标识符
URI即统一资源标识符,是一个用于标识某一互联网资源名称的字符串。该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。
2. 组成
协议URI由3部分组成:存放资源的主机名、片段标识符和相对URI。
(1)主机名,存放资源自身的名称,由路径表示。
(2)标识符,有的URI指向一个资源的内部,这种URI以“#”结束,并跟着一个anchor标识符(称为片段标识符)。
(3)相对URI,这一部分不包括任何命名规范,路径代表同一机器上的资源。
语法格式如下:
协议名称://域名.根域名/目录/文件名.后缀
例如:
https://example.org/absolute/URI/with/absolute/path/to/resource.txt
上例说明如下。
协议:https
主机名:example.org
目录:/absolute/URI/with/absolute/path/to
文件名:resource.txt
3. 统一资源定位符
URL是统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
(1)URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
URL的一般语法格式为:
protocol://hostname[:port]/path/[;parameters][?query]#fragment
注意:带方括号[]的为可选项。
(2)格式说明。
protocol(协议):指定使用的传输协议,如表4-6所示列出了protocol属性的有效方案名称。最常用的是HTTP,它也是目前WWW中应用最广的协议。
表4-6 protocol属性的有效方案名称
hostname(主机名):是指存放资源的服务器的域名系统(DNS)主机名或IP地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。
port(端口号):整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。
path(路径):由零个或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
parameters(参数):这是用于指定特殊参数的可选项。
query(查询):可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP、.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。
fragment(信息片断):字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
(3)用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。
例如:ftp://a:1234/b/c/d.txt
代表获取资源使用FTP,资源目标是a主机的1234端口的b目录下的c目录下的d.txt。
4. 统一资源名称
URN是URI一种用来通过特定的命名空间产生的名字,用于标注资源。URN不需要指定其资源的位置或者是如何访问。
URN可以提供一种机制,用于查找和检索定义特定命名空间的架构文件。尽管普通的URL可以提供类似的功能,但是在这方面,URN更加强大并且更容易管理,因为URN可以引用多个URL。与URL不同,URN与地址无关。
5. URI、URL和URN的关系
URL和URN是URI的子集。其中,URN函数就像是一个人的名字,URL就像是一个人的住址。换句话说就是,URN提供定义,而URL就是提供一个方法来找到它。