const和static readonly区别


Posted in 面试题 onMay 20, 2013
答:const
用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序
static readonly
用 static readonly 修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化
示例:
测试类:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example02Lib
{
public class Class1
{
public const String strConst = “Const”;
public static readonly String strStaticReadonly = “StaticReadonly”;
//public const String strConst = “Const Changed”;
//public static readonly String strStaticReadonly = “StaticReadonly Changed”;
}
}
客户端代码:
using System;
using System.Collections.Generic;
using System.Text;
using Example02Lib;
namespace Example02
{
class Program
{
static void Main(string[] args)
{
//修改Example02中Class1的strConst初始值后,只编译Example02Lib项目
//然后到资源管理器里把新编译的Example02Lib.dll拷贝Example02.exe所在的目录,执行Example02.exe
//切不可在IDE里直接调试运行因为这会重新编译整个解决方案!!
//可以看到strConst的输出没有改变,而strStaticReadonly的输出已经改变
//表明Const变量是在编译期初始化并嵌入到客户端程序,而StaticReadonly是在运行时初始化的
Console.WriteLine(“strConst : {0}”, Class1.strConst);
Console.WriteLine(“strStaticReadonly : {0}”, Class1.strStaticReadonly);
Console.ReadLine();
}
}
}
结果:
strConst : Const
strStaticReadonly : StaticReadonly
修改后的示例:
测试类:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example02Lib
{
public class Class1
{
//public const String strConst = “Const”;
//public static readonly String strStaticReadonly = “StaticReadonly”;
public const String strConst = “Const Changed”;
public static readonly String strStaticReadonly = “StaticReadonly Changed”;
}
}
结果
strConst : Const
strStaticReadonly : StaticReadonly Changed

Tags in this post...

面试题 相关文章推荐
开发中都用到了那些设计模式?用在什么场合?
Aug 21 面试题
面向对象编程的优势是什么
Dec 17 面试题
什么造成了Java里面的异常
Apr 24 面试题
如何打印出当前源文件的文件名以及源文件的当前行号
Apr 05 面试题
Oracle性能调优原则
May 03 面试题
什么是触发器(trigger)? 触发器有什么作用?
Sep 18 面试题
C#实现启动一个进程
Oct 01 面试题
东方红海科技面试题软件测试方面
Feb 08 面试题
remote接口和home接口主要作用
May 15 面试题
AJAX都有哪些有点和缺点
Nov 03 面试题
介绍下Java中==和equals的区别
Sep 01 面试题
深圳茁壮笔试题
May 28 面试题
某公司C#程序员面试题笔试题
May 26 #面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
Feb 10 #面试题
C#里面可以避免一个类被其他类继承么?如何?
Sep 26 #面试题
extern是什么意思
Mar 10 #面试题
星空联盟C# .net笔试题
Dec 05 #面试题
C#里面如何倒序排列一个数组的元素?
Jun 21 #面试题
C#如何允许一个类被继承但是避免这个类的方法被重载?
Feb 24 #面试题
You might like
PHP Mysql编程之高级技巧
2008/08/27 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
php获取参数的几种方法总结
2014/02/18 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
php操作access数据库的方法详解
2017/02/22 PHP
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python ljust rjust center输出
2008/09/06 Python
一个简单的python程序实例(通讯录)
2013/11/29 Python
python删除不需要的python文件方法
2018/04/24 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
Sql面试题
2013/03/20 面试题
铁路个人事迹材料
2014/01/30 职场文书
同学毕业留言寄语
2015/02/27 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android