`

const vs. readonly

    博客分类:
  • C#
阅读更多
关于C#中的const和readonly想必使用C# .NET开发的朋友都很了解吧?总结一下const和readonly也就这么几条吧:

1、const和readonly的值一旦初始化则都不再可以改写;
2、const只能在声明时初始化;readonly既可以在声明时初始化也可以在构造器中初始化;
3、const隐含static,不可以再写static const;readonly则不默认static,如需要可以写static readonly;
4、const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值);readonly则是运行期动态解析的常量;
5、const既可用来修饰类中的成员,也可修饰函数体内的局部变量;readonly只可以用于修饰类中的成员。

前面几条也没什么可说的,不过关于这第4条,里面还是有些文章可做的。试试下面的例子,看看是否与你所想一致吧!

常量与静态只读变量类库(文件名Consts.cs)

public class Consts
{
    public const string Const = "const";
    public static readonly string Readonly = "readonly";
}

执行csc /t:library Consts.cs编译输出Consts.dll。

1. 客户端(文件名Quiz.cs,编译选项/r:Consts.dll)
public class Quiz
{
  public static void Main()
  {
      System.Console.WriteLine(Consts.Const);
      System.Console.WriteLine(Consts.Readonly);
  }
}

执行csc Quiz.cs编译输出Quiz.exe.

2. 执行Quiz.exe,输出如下:

const
readonly

3. 现在把Consts.cs里面的两个常量的值都换成大写并重新编译Consts.cs(Quiz.exe不变,仍是引用Consts.dll)。再执行Quiz.exe,输出会是……什么呢?

转自:http://blog.joycode.com/jgtm2000/archive/2003/12/02/8240.aspx
分享到:
评论

相关推荐

    .net中const和readonly使用

    - **const vs. readonly:** - `const`主要用于定义不变的值,在编译时期就已经确定,并且不能在运行时更改。 - `readonly`则更加灵活,可以在运行时确定值,且可以在构造函数中初始化。 - **应用场景:** - 当需要...

    c#中const与readonly区别

    在C#编程语言中,`const`和`readonly`关键字都是用来声明不可变变量的,但它们之间存在一些重要的区别,这些区别主要体现在初始化、作用域、存储位置以及使用场景等方面。 ### 1. 初始化 - **const**:`const`...

    C#编程中 readonly与const的区别

    ### C#编程中 readonly与const的区别详解 #### 一、概述 在C#编程语言中,`readonly`和`const`这两个关键字都用于定义只读字段,但它们之间存在一些重要的区别。理解这些区别有助于更好地设计和实现软件系统,尤其...

    C++ 中 const和static readonly区别

    C++ 中 const 和 static readonly 区别 C++ 中 const 和 static readonly 是两种不同的关键字,它们都用于修饰变量或字段,但是它们之间存在着本质的区别。 首先,const 是一个编译时常量,它的值是在编译期间确定...

    C#基础:基于const与readonly的深入研究

    在C#编程语言中,`const` 和 `readonly` 关键字都用于声明常量,但它们之间存在一些显著的区别。常量是不可更改的值,一旦被赋值后就不能再次修改。 首先,`const` 关键字用于声明编译时常量。这意味着,任何用 `...

    C#中const 和 readonly 修饰符的用法详解

    1. 只有C#内置类型(int,double,long等)可以声明为const;...namespace const_and_readonly { class Program { static void Main(string[] args) { Console.WriteLine(Half a year have {0} Moths, Cal

    C#面试题集及经验之谈

    5. **常量与只读字段(Const vs. Readonly Fields)** - `const`定义的字段在编译时就被替换为其值,适用于不会改变的数值型常量。 - `readonly`字段在初始化后不能更改,适用于那些在运行时可能根据某些条件动态...

    C#中const和readonly的用法比较

    C#中const和readonly的用法比较 C#中const和readonly都是用于定义常量的关键字,但是它们之间存在着明显的差异。 首先,const关键字用于定义常量,const常量是隐式静态的,所有在类外用过类名来引用变量。const...

    c#.net中const和readonly的区别

    C# 中的 const 和 readonly 关键字都可以用来定义常量,但它们之间存在一些重要的区别。这些区别主要体现在声明方式、初始化时机、存储位置、可修改性、类型限制以及在系统开发中的使用策略上。 首先,const 关键字...

    C#中 const 和 readonly 的不同

    const 的概念就是一个包含不能修改的值的变量。常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。...readonly 关键字与 const 关键字不同。 1. const 字段只能在该字段的声明中

    C#程序设计-3期(KC008) KC008110100018-怎样区别const, static和readonly?.docx

    在C#编程语言中,了解并正确使用`const`、`static`和`readonly`关键字是至关重要的。这些关键字修饰的变量在程序的不同阶段被初始化,并具有不同的作用域和使用方式。下面将详细阐述这三个关键字的区别。 首先,`...

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

    在C#编程语言中,`const`和`readonly`关键字都是用来声明不可变的变量,但它们之间存在着一些重要的区别。本文将深入探讨这两个关键字,帮助开发者理解和掌握它们的使用场景以及背后的原理。 首先,`const`关键字...

    const data彻底研究

    通过`getPageAttribute`函数,我们可以观察到`const_value`的内存属性为`ReadOnly`,这意味着尝试直接修改其值将被视为非法操作。尽管`const_cast`可以移除指针的`const`限定,但实际内存区域的保护属性并未改变,...

    C#基础知识系列八const和readonly关键字详细介绍

    在C#编程语言中,`const`和`readonly`关键字都是用来声明常量的,但它们之间存在着重要的差异。理解这些差异对于编写高效且维护性强的代码至关重要。 首先,`const`关键字用于声明静态常量。这意味着在声明常量时...

    浅谈c#中const与readonly区别

    在C#编程语言中,`const`和`readonly`都是用来定义不可变的变量,但它们之间存在着重要的差异。理解这些差异有助于编写更加高效和安全的代码。 首先,`const`关键字用于声明编译时常量。这意味着,一旦声明了一个`...

    readonly总结

    总的来说,`readonly` 关键字(或等效的 `final`、`const`)提供了数据的不可变性,这对于保证程序的稳定性和安全性至关重要。在多线程环境中,只读变量还可以帮助避免并发问题,因为它们不会引发竞态条件。此外,...

Global site tag (gtag.js) - Google Analytics