java - C#中的 `readonly`是否也和Java中的 `final`一样区分值类型和引用类型的变量?

标签 java c#

在Java中,

  • final 修改的引用类型的变量不能更改为引用任何其他对象
  • final 修改的原始类型的变量不能更改为具有不同的值

我在 Does `final` means a field is not mutable? 询问过

C#中的readonly是否也同样区分值类型和引用类型的变量?

谢谢。

最佳答案

当用作变量的修饰符时,C# 中的 readonly 等同于 Java 的 final 因此它们对于值类型和引用类型的行为方式完全相同他们各自的语言。

Java 的“最终”行为

你只能初始化一个 final 变量一次,而且只能一次。这与对象状态是否可以修改无关。

C#“只读”行为

readonly 关键字是一个只能在字段上使用的修饰符。给定一个用 readonly 修饰符声明的变量,对声明引入的字段的任何赋值只能作为声明的一部分或在同一类的构造函数中发生。

Readonly 修饰符防止字段被更改。因此,以后任何更改它们的尝试都是不允许的。

关于java - C#中的 `readonly`是否也和Java中的 `final`一样区分值类型和引用类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47042860/

相关文章:

c# - 将字节数组(从读取文件)转换为字符串

c# - 依赖注入(inject) - 处理多次注入(inject)的简洁方法

c# - 绘制多维向量的 K-Means 聚类

java - 以编程方式以受控方式增加 CPU 使用率

java - Windows 上非常奇怪的 FileOutputStream 行为

java - 使用标志 CLEAR_TOP 时后台堆栈中的 Activity

c# - 如何在通用 Windows 应用程序中使用配置设置

c# - .NET Micro Framework 不安全代码

Java - 在模型类中使用实用方法

java - 如何在 Struts 2 中使用 View ?