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; 
 那就另一回事了。 
 -------------------- 
 --------------------同意,可以解释编译时的好处