透明 发表于 2015-1-16 14:28:09

来一篇关于NET的谈谈Nullable的范例转换成绩

另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。<p>本篇文章会商可空值范例(Nullable<T>)的转换,却确地说是怎样将一品种型的值工具转换成响应的可空值。这来历于明天我们的一个成员碰到的一个小成绩,我经由一些收拾写了这篇文章。固然没有甚么手艺含量可言,也但愿对某些读者带来匡助。
1、四种典范的范例转换体例
关于范例转化,大概进一步地,关于像Int、Double、DateTime、String等这些原生范例之间的转化,我们具有四种典范的转换体例。假如范例之间不具有山人转换干系存储,我们能够之间经由过程范例转换操纵符举行显式转换,好比:
<olclass="dp-c">doubledoubleValue=3.14159265;intintValue=(int)doubleValue;
第二种则是借助于Convert这个静态范例的ChangeType大概ToXxx办法(Xxx代表转换的方针范例),好比:
<olclass="dp-c">stringliteralValue="123";intintValue1=Convert.ToInt32(literalValue);intintValue2=(int)Convert.ChangeType(literalValue,typeof(int));
第三种办法为创立TypeConverter大概它的基于详细范例的多少子类,好比StringConverter、BooleanConverter、DateTimeConverter等。在利用的时分你必要先实例化响应的TypeConverter,然后挪用响应的范例转换办法。好比:
<olclass="dp-c">stringliteralValue="1981-08-24";DateTimeConverterdateTypeConverter=newDateTimeConverter();DateTimedateTimeValue=(DateTime)dateTypeConverter.ConvertFromString(literalValue);literalValue="02:40:50";TimeSpanConvertertimeSpanConverter=newimeSpanConverter();TimeSpantimeSpanValue=(TimeSpanimeSpanConverter.ConvertFromString(literalValue);
最初一种罕见的办法用在将基于某种详细范例的格局化字符串转化成对应的范例,我们能够挪用详细范例的静态办法Parse大概TryParse完成范例的转换,好比:

<olclass="dp-c">stringliteralValue="1981-08-24";DateTimedateTimeValue1=DateTime.Parse(literalValue);DateTimedateTimeValue2;if(DateTime.TryParse(literalValue,outdateTimeValue2)){//...}

2、当范例转换遭受Nullable<T>范例

Convert几近完成一切“兼容范例”之间的转换,也能够向Parse办法一样剖析具有正当格局的字符串。可是,假如方针范例换成是Nullable<T>范例的时分,范例转换将会失利。好比我们将下面第二个例子的方针范例从int换成int?(Nullable<Int32>):
<olclass="dp-c">stringliteralValue="123";try{int?intValue=(int?)Convert.ChangeType(literalValue,typeof(int?));}catch(InvalidCastExceptionex){Console.WriteLine(ex.Message);}
范例转换毛病动静会被输入:
<olclass="dp-c">InvalidcastfromSystem.StringtoSystem.Nullable`1[]
实践上,假如你挪用Convert的ChangeType办法将任何范例工具转换成Nullable<T>范例,城市抛出出InvalidCastException非常,即便你将T范例转化成Nullable<T>。好比,我们将下面的例子华夏数据范例换成int范例:
<olclass="dp-c">intintValue1=123;try{int?intValue=(int?)Convert.ChangeType(intValue1,typeof(int?));}catch(InvalidCastExceptionex){Console.WriteLine(ex.Message);}
仍然会输出相似的毛病信息:
<olclass="dp-c">InvalidcastfromSystem.Int32toSystem.Nullable`1[].
而实践上,T范例的工具是能够显式大概隐式转化成Nullable<T>工具的。也就是说,上面代码所暗示的范例转换是没有成绩的:

<olclass="dp-c">intintValue1=123;int?intValue2=intValue1;int?intValue3=(int?)intValue1;

3、将基于Nullable<T>的范例转换完成在扩大办法中

从下面的先容我们能够得出如许的结论:假如范例T1和T2可以互相兼容,我们能够借助Convert将T1范例工具转换成T2范例,然后经由过程显式范例转换进一步转换成Nullable<T2>。我们能够经由过程这两个步骤完成针关于Nullable<T>范例的转换。为了操纵便利,我将此转换逻辑写在针对IConvertible接口的扩大办法中:
<divclass="code"><olclass="dp-c">publicstaticclassConvertionExtensions{publicstaticT?在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。

金色的骷髅 发表于 2015-1-18 14:42:39

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的工具。

不帅 发表于 2015-1-25 19:40:47

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

简单生活 发表于 2015-2-3 19:51:22

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

透明 发表于 2015-2-9 05:08:05

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

变相怪杰 发表于 2015-2-27 00:52:26

众所周知,Windows以易用而出名,也因此占据不少的服务器市场。

因胸联盟 发表于 2015-3-8 19:47:13

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

老尸 发表于 2015-3-16 14:05:11

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

第二个灵魂 发表于 2015-3-22 23:44:58

虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
页: [1]
查看完整版本: 来一篇关于NET的谈谈Nullable的范例转换成绩