C#中使用GUID的笔记
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。”
1. 一个GUID为一个128位的整数(16字节),在使用唯一标识符的情况下,你可以在所有计算机和网络之间使用这一整数。
2. GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:337c7f2b-7a34-4f50-9141-bab9e6478cc8 即为有效的 GUID 值。
3. 世界上(Koffer注:应该是地球上)的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
4. 在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。
.NET中使用GUID
GUID 在 .NET 中使用非常广泛,而且 .NET Framework 提供了专门 Guid 基础结构。
Guid 结构的常用法包括:
1) Guid.NewGUID()
生成一个新的 GUID 唯一值
2) Guid.ToString()
将 GUID 值转换成字符串,便于处理
3)构造函数 Guid(string)
由 string 生成 Guid 结构,其中string 可以为大写,也可以为小写,可以包含两端的定界符“{}”或“()”,甚至可以省略中间的“-”,Guid 结构的构造函数有很多,其它构造用法并不常用。
.NET Framework 中可以使用类 GuidConverter 提供将 Guid 结构与各种其他表示形式相互转换的类型转换器。
在C#中生成一个GUID
处理一个唯一标识符使得存储和获得信息变得更加容易。在处理一个数据库中这一功能变得尤其有用,因为一个GUID能够操作一个主键。
同样,SQL Server也很好地集成了GUID的用途。SQL Server数据类型uniqueidentifier能够存储一个GUID数值。你可以通过使用NEWID()函数在SQL Server中生成这一数值,或者可以在SQL Server之外生成GUID,然后再手动地插入这一数值。
在.NET中,后面一种方法显得更加直接。.NET Framework中的基本System类包括GUID数值类型。除此之外,这一数值类型包含了处理GUID数值的方法。特别地,NewGUID方法允许你很容易地生成一个新的GUID。
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
6
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
10
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
下面为这一程序的输出:(虽然不同系统之间的GUID是变化的。)
GUID: 9245fe4a-d402-451c-b9ed-9c1a04247482
以上范例使用到System.Guid空间名称的NewGuid函数来返回一个数值。在这一点上,你可以看到GUID是一个很好的功能,但在程序的什么地方使用到它们,并如何使用它们?
在程序中使用一个GUID
一个GUID可以在后台数据库中操作一个主键。以下代码使用一个GUID在一个后台数据库中存储信息,这一数据库包含以下的列:
pk_guid —uniqueidentifier 数据类型
name —nvarchar 数据类型
这样出现一个包含文本框的简单Windows窗体。当选择按钮时,文本框中的数据被插入到数据库中name列。通过程序代码可以生成一个GUID并存储在pk_guid列中:
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
13
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
另一个GUID程序将一个唯一的标识符分配给一个.NET类或者接口,也就是说,GUID作为一个属性被分配给类或者接口。可以使用标准属性语法来实现这一过程: 本
我们可以扩展第一个范例来分配一个GUID。System.Runtime.InteropServices空间名称必须被引用来使用GUID属性。以下C#代码实现了这一过程:
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
16
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
20
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
GUID永远是方便的
对于程序开发的各个方面,.NET Framework简化了建立和处理GUID数值的过程。在.NET程序需要的地方,这一功能很容易地生成唯一的数值。
C#中使用GUID的笔记的更多相关文章
- SQL Server中的GUID
GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值. GUID ...
- (转载)C#中使用GUID
原文地址:http://www.cnblogs.com/dongqi/archive/2008/10/13/1310128.html GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同 ...
- Ubuntu_ROS中应用kinect v2笔记
Ubuntu_ROS中应用kinect v2笔记 个人觉得最重要的资料如下: 1. Microsoft Kinect v2 Driver Released http://www.ros.org/new ...
- 在Oracle中使用Guid
sys_guid() - 唯一索引 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g 里SYS_GUID ...
- (转+整理)C#中使用GUID
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...
- C#中使用GUID
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...
- 【UEFI】---BIOS中对Guid的使用以及Lib函数的使用总结
---恢复内容开始--- BIOS发展至今传统的汇编实现早已被抛弃,UEFI作为目前一套主流的标准定义接口,被广泛使用.之前被一些有关GUID和一些Lib函数的使用以及跨Pkg调用给折腾的不行,每次改 ...
- ES6中Map数据结构学习笔记
很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...
- 基于SqlSugar的开发框架循序渐进介绍(4)-- 在数据访问基类中对GUID主键进行自动赋值处理
我们在设计数据库表的时候,往往为了方便,主键ID一般采用字符串类型或者GUID类型,这样对于数据库表记录的迁移非常方便,而且有时候可以在处理关联记录的时候,提前对应的ID值.但有时候进行数据记录插入的 ...
随机推荐
- wait函数返回值总结
之前在学习wait和waitpid函数的时候,就对使用宏WIFEXITED来检查获取的进程终止状态产生过疑惑:一般我们在程序中是调用的exit或者_exit函数来退出的,那么wait和waitpid函 ...
- 在PC上收发短信--Pidgin短信(Linux Pidgin插件)
Pidgin短信是Pidgin/empathy的一个插件.当手机收到短信进,电脑上面有提示:可以在电脑上发手机短信.让你时刻保持在电脑屏幕上,也不会错过短信.目前只支持安卓,wifi连接方式. 功能 ...
- [持续更新]android stduio的一些小技巧
1.导入第三方jar 无法和eclipse一样可以直接刷新就可以导入libs里的jar,要到jar文件上右键按add jar. 2.其他依赖项目里有support-v4包的时候 在Libs里还是要有s ...
- Lighting System Design
题意:从小到大给出额定功率,给出该功率费用,和灯泡的数量和单价,现在灯泡能在比他额定功率大的功率运行,求让所有灯泡正常工作的最小费用 分析: 问题转化为求用哪几个功率运行灯泡最小费用,dp[i]前i个 ...
- Educational Codeforces Round 15 套题
这套题最后一题不会,然后先放一下,最后一题应该是大数据结构题 A:求连续最长严格递增的的串,O(n)简单dp #include <cstdio> #include <cstdlib& ...
- linux的文件属性介绍、目录及路径表示方法
一.认识linux文件 认识linux下的文件需要先学习命令:ls. 该命令用于显示指定目录下的内容,其中最常用的参数有: -l显示目录和文件的完整属性信息 -a显示所有文件和目录,包含隐藏文件和目录 ...
- python 入门实践之网页数据抓取
这个不错.正好入门学习使用. 1.其中用到 feedparser: 技巧:使用 Universal Feed Parser 驾驭 RSS http://www.ibm.com/developerwor ...
- Windows服务-手把手带你体验
Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而 ...
- <Chapter 2>2-2-1.用户偏好模式(The User Preferences Pattern)
在这个模块中我们要创建的应用是一个简单的钟.当一个用户访问这个网站时,这个应用会更具服务器的系统时间显示当前的时间.默认情况下,这个应用使用标准国际时间(UTC)时区显示当前时间.用户可以使用Goog ...
- jsp文件上传、下载
一.文件上传 上传文件是Web开发中经常要用到的功能:例如在基于B/S的人事信息管理系统中上传照片,在新闻发布系统中上传图片等等.....要实现文件上传功能,就需要综合利用java中的文件输入和输出相 ...