仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 576|回复: 7
打印 上一主题 下一主题

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

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:33:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。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简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
莫相离 该用户已被删除
5#
发表于 2015-2-20 12:57:53 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
再见西城 该用户已被删除
6#
发表于 2015-3-6 17:07:02 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
再现理想 该用户已被删除
7#
发表于 2015-3-13 04:30:23 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
变相怪杰 该用户已被删除
8#
发表于 2015-3-20 12:54:23 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 18:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表