浅谈c#中const与readonly区别

 更新时间:2015年06月09日 12:06:30   投稿:hebedich  
C#引入了readonly修饰符来表示只读域,const来表示不变常量。顾名思义对只读域不能进行写操作,不变常量不能被修改,这两者到底有什么区别呢?

const 的概念就是一个包含不能修改的值的变量。
常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的。

readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。
因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。
readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。

readonly 关键字与 const 关键字不同。

1. const 字段只能在该字段的声明中初始化。
readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null。
readonly可以是任何类型

总结

const只能在初期就使用常量初始化好。对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时候才确定值的~~

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • 详解C#扩展方法原理及其使用

    详解C#扩展方法原理及其使用

    这篇文章主要介绍了C#扩展方法原理及其使用的的相关资料,文中代码非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)

    C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)

    下面小编就为大家带来一篇C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • C#实现windows系统重启和关机的代码详解

    C#实现windows系统重启和关机的代码详解

    这篇文章主要介绍了C#实现windows系统重启和关机的的方法,涉及C#调用windows系统命令实现控制开机、关机等操作的技巧,非常简单实用,需要的朋友可以参考下
    2024-02-02
  • C#(int)中Convert、Parse、TryParse的区别

    C#(int)中Convert、Parse、TryParse的区别

    Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢?
    2013-04-04
  • C#中的Image控件用法详解与实际应用示例

    C#中的Image控件用法详解与实际应用示例

    在C#应用程序开发中,图像显示是一个常见的需求,无论是创建图形界面还是处理图像数据,System.Windows.Controls.Image控件都是实现这一目标的重要工具,本文将详细介绍Image控件的功能、用法、优化技巧以及一些实际应用示例,需要的朋友可以参考下
    2024-06-06
  • 详解C#中的string与String

    详解C#中的string与String

    本篇文章主要对jC#中的小写string与大写String进行详细介绍,相信对大家学习会有很好的帮助,需要的朋友一起来看下吧
    2016-12-12
  • C#同步网络时间的方法实例详解

    C#同步网络时间的方法实例详解

    这篇文章主要介绍了C#同步网络时间的方法,以实例形式较为详细的分析了C#获取网络时间与同步本机系统时间的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • C#调用新浪微博API实例代码

    C#调用新浪微博API实例代码

    在本篇文章里小编给大家整理的是一篇关于C#调用微博API的相关知识点内容,有需要的朋友们可以学习下。
    2019-11-11
  • C#中C/S端实现WebService服务

    C#中C/S端实现WebService服务

    本文主要介绍了C#中C/S端实现WebService服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C#使用Task.ContinueWith组合任务

    C#使用Task.ContinueWith组合任务

    这篇文章介绍了C#使用Task.ContinueWith组合任务的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论