关于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
分享到:
相关推荐
- **const vs. readonly:** - `const`主要用于定义不变的值,在编译时期就已经确定,并且不能在运行时更改。 - `readonly`则更加灵活,可以在运行时确定值,且可以在构造函数中初始化。 - **应用场景:** - 当需要...
在C#编程语言中,`const`和`readonly`关键字都是用来声明不可变变量的,但它们之间存在一些重要的区别,这些区别主要体现在初始化、作用域、存储位置以及使用场景等方面。 ### 1. 初始化 - **const**:`const`...
### C#编程中 readonly与const的区别详解 #### 一、概述 在C#编程语言中,`readonly`和`const`这两个关键字都用于定义只读字段,但它们之间存在一些重要的区别。理解这些区别有助于更好地设计和实现软件系统,尤其...
C++ 中 const 和 static readonly 区别 C++ 中 const 和 static readonly 是两种不同的关键字,它们都用于修饰变量或字段,但是它们之间存在着本质的区别。 首先,const 是一个编译时常量,它的值是在编译期间确定...
在C#编程语言中,`const` 和 `readonly` 关键字都用于声明常量,但它们之间存在一些显著的区别。常量是不可更改的值,一旦被赋值后就不能再次修改。 首先,`const` 关键字用于声明编译时常量。这意味着,任何用 `...
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
5. **常量与只读字段(Const vs. Readonly Fields)** - `const`定义的字段在编译时就被替换为其值,适用于不会改变的数值型常量。 - `readonly`字段在初始化后不能更改,适用于那些在运行时可能根据某些条件动态...
C#中const和readonly的用法比较 C#中const和readonly都是用于定义常量的关键字,但是它们之间存在着明显的差异。 首先,const关键字用于定义常量,const常量是隐式静态的,所有在类外用过类名来引用变量。const...
C# 中的 const 和 readonly 关键字都可以用来定义常量,但它们之间存在一些重要的区别。这些区别主要体现在声明方式、初始化时机、存储位置、可修改性、类型限制以及在系统开发中的使用策略上。 首先,const 关键字...
const 的概念就是一个包含不能修改的值的变量。常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。...readonly 关键字与 const 关键字不同。 1. const 字段只能在该字段的声明中
在C#编程语言中,了解并正确使用`const`、`static`和`readonly`关键字是至关重要的。这些关键字修饰的变量在程序的不同阶段被初始化,并具有不同的作用域和使用方式。下面将详细阐述这三个关键字的区别。 首先,`...
在C#编程语言中,`const`和`readonly`关键字都是用来声明不可变的变量,但它们之间存在着一些重要的区别。本文将深入探讨这两个关键字,帮助开发者理解和掌握它们的使用场景以及背后的原理。 首先,`const`关键字...
通过`getPageAttribute`函数,我们可以观察到`const_value`的内存属性为`ReadOnly`,这意味着尝试直接修改其值将被视为非法操作。尽管`const_cast`可以移除指针的`const`限定,但实际内存区域的保护属性并未改变,...
在C#编程语言中,`const`和`readonly`关键字都是用来声明常量的,但它们之间存在着重要的差异。理解这些差异对于编写高效且维护性强的代码至关重要。 首先,`const`关键字用于声明静态常量。这意味着在声明常量时...
在C#编程语言中,`const`和`readonly`都是用来定义不可变的变量,但它们之间存在着重要的差异。理解这些差异有助于编写更加高效和安全的代码。 首先,`const`关键字用于声明编译时常量。这意味着,一旦声明了一个`...
总的来说,`readonly` 关键字(或等效的 `final`、`const`)提供了数据的不可变性,这对于保证程序的稳定性和安全性至关重要。在多线程环境中,只读变量还可以帮助避免并发问题,因为它们不会引发竞态条件。此外,...