c# const 赋值
int a=1;
const int b=a;
为什么给b赋值的时候不能用变量啊。
我认为,赋值的那一刻,变量是不会变的呀,就当常量用也行吧?
------解决方案--------------------那按你的逻辑,哪样的才是变量哪样的才是常量呢?
------解决方案--------------------往往我们在大型程序中, 我们不能确定a目前的值是否能满足b的要求。所以引入常量的概念了。。
理论上是可以的,但是这样是不允许的,规则!
------解决方案--------------------如果你不能理解
你试试下面两段程序
//first
int a = 100000;
int b = a * a;
//second
int b = 100000 * 100000;
你应该就了解什么是编译时,什么是运行时了
最后你在运行一下这段
//third
const int a = 100000;
int b = a * a;
------解决方案--------------------const本来就是来定义常量的,
const int b=5;也就是意思用b代替5,且不可能改变
------解决方案--------------------最起码省下了压栈出栈的时间,常量就是个实际数值,是不用压栈的。
你想想
const int j=9;
int i=8+j;
和
int i=8+9;
其实在机器语言是一样的........
你要是写成
int j=9;
int i=8+j;
那就另一回事了。
------解决方案--------------------可以用readonly的变量来模拟常量,可以在构造函数中初始化
------解决方案--------------------定义常量是为了维护方便
比如你的程序中大量应用一个数值,虽然这个数值是固定的,但换一种环境,该值是有可能变化的,但使用此常量的程序却是不变的,那么,修改一个源码,把常量改成另一个值,重编译就好了
至于在程序中定义为常量,是为了防止使用不当,造成修改,引起错误
------解决方案--------------------最起码省下了压栈出栈的时间,常量就是个实际数值,是不用压栈的。
你想想
const int j=9;
int i=8+j;
和
int i=8+9;
其实在机器语言是一样的........
你要是写成
int j=9;
int i=8+j;
那就另一回事了。
--------------------
--------------------同意,可以解释编译时的好处