码迷,mamicode.com
首页 > Web开发 > 详细

【.Net姿势随记】const 与 readonly 初始化姿势

时间:2016-01-18 11:43:31      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

using System; class P {     static readonly int A=B*10;     static readonly int B=10;        public static void Main(string[] args)     {         Console.WriteLine("A is {0},B is {1} ",A,B);     } }
技术分享

 

      对于上述代码,输出结果是多少?很多人会认为是A is 100,B is 10吧!其实,正确的输出结果是A is 0,B is 10。好吧,如果改成下面的话:

技术分享
using System; class P {     const int A=B*10;     const int B=10;        public static void Main(string[] args)     {         Console.WriteLine("A is {0},B is {1} ",A,B);     } }
技术分享

 

       对于上述代码,输出结果又是多少呢?难道是A is 0,B is 10?其实又错了,这次正确的输出结果是A is 100,B is 10。

       那么为什么是这样的呢?其实在上面说了,const是静态常量,所以在编译的时候就将A与B的值确定下来了(即B变量时10,而A=B*10=10*10=100),那么Main函数中的输出当然是A is 100,B is 10啦。而static readonly则是动态常量,变量的值在编译期间不予以解析,所以开始都是默认值,像A与B都是int类型,故都是0。而在程序执行到A=B*10;所以A=0*10=0,程序接着执行到B=10这句时候,才会真正的B的初值10赋给B。

【.Net姿势随记】const 与 readonly 初始化姿势

标签:

原文地址:http://www.cnblogs.com/x-poior/p/5138553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!