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...

面试题 相关文章推荐
什么是Smarty变量操作符?如何使用Smarty变量操作符
Jul 18 面试题
PHP解析URL是哪个函数?怎么用?
May 09 面试题
广州地球村科技数据库题目
Apr 25 面试题
MySQL面试题
Jan 12 面试题
最新远光软件笔试题面试题内容
Nov 08 面试题
.NET常见笔试题集
Dec 01 面试题
介绍一下linux文件系统分配策略
Feb 25 面试题
中间件分为哪几类
Mar 14 面试题
GWT的应用有哪两种部署模式
Dec 21 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
May 20 面试题
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
Apr 13 面试题
解释下面关于J2EE的名词
Nov 15 面试题
某公司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
第三节 定义一个类 [3]
2006/10/09 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
JavaScript 事件系统
2010/07/22 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
Python及Django框架生成二维码的方法分析
2018/01/31 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Django 路由控制的实现代码
2018/11/08 Python
django迁移文件migrations的实现
2020/03/31 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
.NET面试10题
2014/02/24 面试题
应聘医学检验人员自荐信
2013/09/27 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
Python初学者必备的文件读写指南
2021/06/23 Python
浅谈JavaScript作用域
2021/12/06 Javascript