深入探讨C#中的const、readonly关键字

首先不可否认,这些在面试上会经常被面试官问起,但是你回答的让面试官满意吗?当然如果你知道了这些原理,或许你就不

怕了。既然说到了原理,我们还是从MSDN说起。


一:值得推敲的几个地方

1.先来看看msdn上面对const是怎么说的,我们会看到。不能修改,编译时常量这些关键性信息。

Q:  const为什么不能被修改。

A:这个很简单,很多教科书上面都说,当编译器编译时,会将常量的值保存在该程序集的元数据中,下面我们做个实例

看一看。

①:新建一个projectA。

代码如下:

// ProjectA

public class TestClass

{

public const int CTRIP = int.MaxValue;

}

再建一个MainProject,引用下projectA。

代码如下:

using System;

class Program

{

static void Main(string[] args)

{

Console.WriteLine(TestClass.CTRIP);

Console.Read();

}

}

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  深入探讨C#中的const、readonly关键字

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23667.html

相关内容

C#实现顺序表(线性表)完整实例

如何解决hash冲突

C#中Equals方法的常见误解

C#实现基于加减按钮形式控制系统音量及静音的方法


C#读取计算机CPU及HDD信息的方法

C#托管堆对象实例包含内容分析

C#实现为类和函数代码自动添加版权注释信息的方法

C#实现终止正在执行的线程

时间: 2024-10-12 21:03:36

深入探讨C#中的const、readonly关键字的相关文章

const & readonly 关键字

1.使用 const 关键字来声明某个常量字段或常量局部变量.常量字段和常量局部变量不是变量并且不能修改. 常量可以为数字.布尔值.字符串或 null 引用(Constants can be numbers, Boolean values, strings, or a null reference). 2.不允许在常数声明中使用 static 修饰符. 3.常数可以参与常数表达式,如下所示: 4.readonly 关键字与 const 关键字不同:const 字段只能在该字段的声明中初始化.re

C#基础知识七之const和readonly关键字

前言 不知道大家对const和readonly关键字两者的区别了解多少,之前真不是很清楚,如果你也不是很清楚的话,那就一起来探讨吧!探讨之前我们先来了解静态变量和动态变量. 静态变量 所谓静态变量就是在编译期间会对变量进行解析,再讲常量的值替换成初始化的值.定义时必须初始化. 动态变量 所谓动态变量就是编译期间会将变量标示只读常量,而不用常量的值代替,定义时可以不初始化,可以延迟到构造函数. const和readonly

c# const与readonly 关键字的比较

C#中,const 与readonly是两个比较有用的关键字.const 与 readonly 定义的数据成员在初始化都不能再改变. 比如定义了public class MathUtitlity    {        public const double PI = 3.14;        public readonly double E = 2.782; } class Program {        static void Main(string[] args) {          

C++ 类中的const关键字

//类中的const关键字 #include<iostream> using namespace std; class Point{ public: //这个const关键字本质上修饰的是this指针 int GetX() const //====>int GetX(const this) { //因为this被隐藏,所以const关键字只好写在函数后面 //x++; //加上const关键字 报错 error C3490: 由于正在通过常量对象访问“x”,因此无法对其进行修改 //这个

详解C和C++中的const关键字

在讲下面的内容之前,要先看看这篇文章const.static变量的存储位置 一.C中的const 作用:(1)可以定义const常量,具有不可变性. (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患. (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改. 同宏定义一样,可以做到不变则已,一变都变! (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. 还是上面的例子,如果在函数体内修改了i,编译器就会报错: (5) 可以节省空间,避免不必要的内存

C++中关于const关键字的使用

const关键字用于表示变量或函数, 亦或其他类型的数据其值或其本身的值禁止被修改. 但需要注意的是, 即使被修饰为const类型的变量, 其本质依旧是个变量, 而不是常量. 也许你会说, 这有什么区别呢? 我在代码中感觉不出差别啊. 其实它们的差别在于编译器的编译. 对于编译器来说, 变量意味着需要分配内存空间, 而常量只是在编译期间记录在编译器的一张内存表里面的一个证整数而已.  变量的值必须初始化, 除非使用extern修饰它, 这就告诉编译器该变量是一个全局const变量, 在哪里定义编

C++ 中的const关键字

为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量:  const Type 变量名 或  Type const 变量名 //两者等同, 如: const int a=5; 与 int const a=5; 等同 常引用:  const Type &引用名 常对象:  Type const 对象名 常成员函数:  类名::fu

C++学习笔记_02 C++中的const和Java中的final关键字的区别

(1)final在java中定义常量,可作用于基本类型或者类类型,若是作用于类类型,则此类类型不能作为父 类被继承,也就是说它的下面不能有子类,这样的类叫做原子类.    C++中的const定义常量 (2)Java中的final如果是对于基本类型,那和C++的const是一样的    但是如果是对对象而言,不同了     (3)final表示这个句柄是不可改变的    final Object obj=(Object)new String("a");    obj=(Object)n

Java的Final和C#的Const,Readonly比较分析(转载)

Java里面没有readonly关键字,预留了const的关键字,目前还没有实际用途,在Java中,跟这两个关键字比较接近的是final; C#中,两者都存在并可用.两者修饰的全局变量或局部变量都不能被修改. 下面是Java中final与C#中const以及readonly之间的联系和区别: 1) C#中,const可以修饰全局变量和局部变量,但readonly只能修饰全局变量. 2) C#中,const修饰的全局变量或局部变量必须在声明的时候初始化,因为是静态,所以无法使用构造方法初始化,当需