首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# const 赋值,该如何处理

2012-01-26 
c# const 赋值inta1;constintba;为什么给b赋值的时候不能用变量啊。我认为,赋值的那一刻,变量是不会变的

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

热点排行