简单生活 发表于 2015-1-18 11:21:54

ASP.NET教程之[你必需晓得的.NET]第二十八回:说说Name这回事儿仓酷云

不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……系列文章目次索引:《你必需晓得的.NET》
1缘起
老赵在谈表达式树的缓存(2):由表达式树天生字符串中提到,在形貌Type信息时会商FullName大概AssemblyQualifiedName供应完全的Type信息,虽是小话题,但倒是值得有聊的话题。在.NET中反响一个Type称号信息的有以下三个属性,分离是:


[*]Name,猎取以后成员的称号。
[*]FullName,猎取Type的完整限制名,包含Type的定名空间,但不包含程序集。
[*]AssemblyQualifiedName,猎取Type的程序集限制名,个中包含从中加载Type的程序集的称号。现实上,AssemblyQualifiedName被界说为只读abstract属性,详细的完成由其派生类来完成,比方TypeBuilder,我们能够依据其详细完成范例对此有个大抵的懂得。
此处的界说无庸置疑是官方的(MSDN),俗语说,现实是查验真谛的独一尺度,那末这三个邻近的观点,事实代表了如何的分歧,我们回到现实近看分晓。
2畅聊Name
2.1由复杂的入手下手
由复杂入手下手,我们无妨看看object的三个分歧Name前往的现实原形:
staticvoidMain(string[]args){Typet1=typeof(object);Console.WriteLine(t1.Name);Console.WriteLine(t1.FullName);Console.WriteLine(t1.AssemblyQualifiedName);}实行了局呢?

<br>
诚如MSDN所说,Name前往了复杂的范例称号,FullName包括定名空间,而AssemblyQualifiedName则包括程序集全称号。而关于非强称号程序集,其AssemblyQualifiedName仍然前往,相干的程序集信息,比方:
Console.WriteLine(t3.AssemblyQualifiedName);Anytao.Learning.ExpressionTree.One,Anytao.Learning.ExpressionTree,Version=1.0.
0.0,Culture=neutral,PublicKeyToken=null
2.2向庞大过分
假如我们只把眼光停止在复杂范例,那末这三个家伙也不值得花点小工夫来注重了,除复杂,还得庞大。以是,我饶特别是的把Expression拿来抓丁了:
staticvoidMain(string[]args){Typet2=typeof(Expression<Func<int,int>>);Console.WriteLine(t2.Name);Console.WriteLine(t2.FullName);Console.WriteLine(t2.AssemblyQualifiedName);}实行的了局呢?

<br>
明显,关于谜底,引发我们存眷的是在Expression<Func<int,int>>中,其FullName的Func<int,int>范例,和int范例均猎取到其AssemblyQualifiedName,而不是FulName。这留给我们一个年夜年夜的疑问,对其缘故原由举行一点点穷究,我们就能够有如许的思索,Func<T>和int分离存在于System.Core和mscorlib程序集,关于我们自己程序集而言,完整有大概在其他援用程序会合引进一个FullName不异的Assembly,以是为独一限制起见,以AssemblyQualifiedName标示Func<T>和int是完整准确的。
批准的成绩,存在于List<T>等其他范例。任何可交换范例参数的实践范例,都大概由分歧程序集的加载而变得不敷“独一”,以是AssemblyQualifiedName来限制List<T>的FullName是明智的。
2.3特地看看Type.ToString()
Type范例另有一个ToString(),用于前往Type的Name,那末这个Name事实是这三其中的哪个呢?假如看了谜底,你一定又一次溃散:
staticvoidMain(string[]args){Typet1=typeof(object);Typet2=typeof(Expression<Func<int,int>>);Typet3=typeof(One);Typet4=typeof(List<int>);Console.WriteLine(t1.ToString());Console.WriteLine(t2.ToString());Console.WriteLine(t3.ToString());Console.WriteLine(t4.ToString());}我们看看此时的了局:
<br>
固然很无语,Type.ToString()现实上并未前往Name、FullName大概AssemblyQualifiedName,而是不完整的FullName,详细就不做过量报告了,我们能够由了局看得很分明。
3回到成绩
明显,FullName在一个程序会合是独一限制的,包括了地点的定名空间,而AssemblyQualifiedName则更包括其程序集称号,关于庞大范例的比方List<T>如许的范例,即使是FullName也将以AssemblyQualifiedName显现其范例参数,以是关于老赵的计划FullName是完整能够胜任为分歧Type完成独一key值的需求。
你以为呢?
公布日期:2009.3.18Anytao

精灵巫婆 发表于 2015-1-20 21:51:16

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

简单生活 发表于 2015-1-27 12:35:16

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

变相怪杰 发表于 2015-2-5 05:11:33

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

不帅 发表于 2015-2-7 04:25:44

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

再现理想 发表于 2015-2-20 13:18:18

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

兰色精灵 发表于 2015-3-6 17:10:24

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

山那边是海 发表于 2015-3-6 19:26:55

ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。

透明 发表于 2015-3-13 06:12:45

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

第二个灵魂 发表于 2015-3-20 15:00:27

是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
页: [1]
查看完整版本: ASP.NET教程之[你必需晓得的.NET]第二十八回:说说Name这回事儿仓酷云