冷月葬花魂 发表于 2015-1-16 22:33:44

ASP.NET教程之C# FAQ: const和static readonly有甚么...

前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。ado|区分我们都晓得,const和staticreadonly切实其实很像:经由过程类名而不是工具名举行会见,在程序中只读等等。在多半情形下能够混用。
两者实质的区分在于,const的值是在编译时代断定的,因而只能在声明时经由过程常量表达式指定其值。而staticreadonly是在运转时盘算出其值的,以是还能够经由过程静态机关函数来赋值。
分明了这个实质区分,我们就不丢脸出上面的语句中staticreadonly和const可否交换了:
1.staticreadonlyMyClassmyins=newMyClass();
2.staticreadonlyMyClassmyins=null;
3.staticreadonlyA=B*20;
staticreadonlyB=10;
4.staticreadonlyint[]constIntArray=newint[]{1,2,3};
5.voidSomeFunction()
{
constinta=10;
...
}
1:不成以换成const。new操纵符是必要实行机关函数的,以是没法在编译时代断定
2:能够换成const。我们也看到,Reference范例的常量(除String)只能是Null。
3:能够换成const。我们能够在编译时代很明白的说,A即是200。
4:不成以换成const。事理和1是一样的,固然看起来1,2,3的数组切实其实就是一个常量。
5:不成以换成readonly,readonly只能用来润色类的field,不克不及润色部分变量,也不克不及润色property等其他类成员。
因而,关于那些实质上应当是常量,可是却没法利用const来声明的中央,可使用staticreadonly。比方C#标准中给出的例子:

publicclassColor
{
publicstaticreadonlyColorBlack=newColor(0,0,0);
publicstaticreadonlyColorWhite=newColor(255,255,255);
publicstaticreadonlyColorRed=newColor(255,0,0);
publicstaticreadonlyColorGreen=newColor(0,255,0);
publicstaticreadonlyColorBlue=newColor(0,0,255);
privatebytered,green,blue;
publicColor(byter,byteg,byteb)
{
red=r;
green=g;
blue=b;
}
}

staticreadonly必要注重的一个成绩是,关于一个staticreadonly的Reference范例,只是被限制不克不及举行赋值(写)操纵罢了。而对其成员的读写仍旧是不受限定的。
publicstaticreadonlyMyClassmyins=newMyClass();

myins.SomeProperty=10;//一般
myins=newMyClass();//堕落,该工具是只读的
可是,假如上例中的MyClass不是一个class而是一个struct,那末前面的两个语句就城市堕落。
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。

小妖女 发表于 2015-1-19 11:18:56

逐步缩小出错代码段的范围,最终确定错误代码的位置。

只想知道 发表于 2015-1-24 12:27:57

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

小女巫 发表于 2015-2-1 10:48:15

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

莫相离 发表于 2015-2-20 12:57:53

主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。

再见西城 发表于 2015-3-6 17:07:02

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

再现理想 发表于 2015-3-13 04:30:23

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。

变相怪杰 发表于 2015-3-20 12:54:23

如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
页: [1]
查看完整版本: ASP.NET教程之C# FAQ: const和static readonly有甚么...