注意:const编译期常量是编译的时候就确定的,可以查看IL代码,是写死的。如果另一个程序集引用后,该程序集没有进行编译,则值不会改变。

看效果:

项目中有2个程序集:

其中:常量在这个程序集中定义并初始化。

namespace ConstReadOnlyTest
{
public class Class1
{
public const string a= "我是const常量.";
public static string b = "我是static变量.";
public readonly static string c = "我是readonly变量.";
}
}

另外,在另一个程序集中引用:

 class ConstReadOnlyTest
{
static void Main(string[] args)
{
Console.WriteLine(Class1.a);
Console.WriteLine(Class1.b);
Console.WriteLine(Class1.c);
Console.ReadKey();
}
}

看结果:

接着,修改const的值:

namespace ConstReadOnlyTest
{
public class Class1
{
public const string a= "我是const常量.1111";
public static string b = "我是static变量.2222";
public readonly static string c = "我是readonly变量.3333";
}
}

编译后,把dll文件放到控制台的\bin\Debug中:

接着,直接运行CAStudy.exe

可以发现const常量的值未改变。

c# 编译期常量const和运行时常量readonly的更多相关文章

  1. in C#,编译型常量(const)和运行时常量(readonly)

    readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数, readonly ...

  2. java常量池-字符串常量池、class常量池和运行时常量池

    原文链接:http://tangxman.github.io/2015/07/27/the-difference-of-java-string-pool/ 在java的内存分配中,经常听到很多关于常量 ...

  3. Java中的常量池(字符串常量池、class常量池和运行时常量池)

    转载. https://blog.csdn.net/zm13007310400/article/details/77534349 简介: 这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的 ...

  4. Java编译时常量和运行时常量

    Java编译时常量和运行时常量 编译期常量指的就是程序在编译时就能确定这个常量的具体值. 非编译期常量就是程序在运行时才能确定常量的值,因此也称为运行时常量. 在Java中,编译期常量指的是用fina ...

  5. 代码编译时JDK版本和运行时JDK版本不一致启动项目报错

    java编译: java编译就是.java文件变成.class文件的过程,这个过程一般在我们常用的编译器中进行,例如Ecliplse和IDEA等:下面以IDEA举例: 执行上述编译使用的JDK版本就是 ...

  6. C#中的静态常量(const)和动态常量(static和readonly)用法和区别

    C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景.工作原理 readonly为运行时常量,程序运行时进行赋 ...

  7. Java方法区和运行时常量池溢出问题分析

    运行时常量池是方法区的一部分,方法区用于存放Class的相关信息,如类名.访问修饰符.常量池.字段描述.方法描述等. String.intern()是一个native方法,它的作用是:如果字符串常量池 ...

  8. Java方法区和运行时常量池溢出问题分析(转)

    运行时常量池是方法区的一部分,方法区用于存放Class的相关信息,如类名.访问修饰符.常量池.字段描述.方法描述等. String.intern()是一个native方法,它的作用是:如果字符串常量池 ...

  9. 常量(const)和只读变量(readonly)

    //const修饰的数据叫做 常量 //常量一旦声明常量的值就不能改变. //常量在声明的时候 必须要赋初始值 //C#编译器在编译的时候 声明常量的那句话不见了. //在使用常量的地方就用常量的值代 ...

随机推荐

  1. rack简介

    什么是rack rack是对ruby的Net::HTTP进行封装了的包,使用rack能够方便的新建一个简单的web应用. what is rack Rack describes itself as f ...

  2. 【树】Unique Binary Search Trees

    题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...

  3. Hibernate 抛出的 Could not execute JDBC batch update

    异常堆栈 org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at or ...

  4. sql 保留两位小数

    select convert(decimal(18,2),1800.2669)

  5. 这个PHP无解深坑,你能解出来吗?(听说能解出来的都很秀)

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由horstxu发表于云+社区专栏 1. 问题背景 PHP Laravel框架中的db migration是比较常用的一个功能了.在每个 ...

  6. CentOS 7 安装 RabbitMQ 3.7

    目录 CentOS 7 安装 RabbitMQ 3.7 安装Erlang 安装依赖 创建yum源 参考 添加内容 安装 进入erlang命令行表示成功 安装 socat RabbitMQ 安装 sys ...

  7. activiti 临时笔记mark

    public class TenMinuteTutorial { public static void main(String[] args) { // Create Activiti process ...

  8. java中线程同步问题

    先不多说,直接上个例子,著名的生产者消费者问题. public class ProducerConsumer { public static void main(String[] args) { Sy ...

  9. [转]验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件

    在ASP.Net中,为了方便表单的验证,提供了验证控件来完成表单输入数据的验证.这些验证控件确实是功能强大,为写表单程序提供了极大的便利.但是,在不熟悉的情况下,经常碰到问题.其中,最常见的是遇到错误 ...

  10. mysql与mysqli的一些区别和方法

    一.mysql与mysqli的概念相关: 1.mysql与mysqli都是php方面的函数集,与mysql数据库关联不大. 2.在php5版本之前,一般是用php的mysql函数去驱动mysql数据库 ...