科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件针对 Java 开发人员的 C# 编程语言

针对 Java 开发人员的 C# 编程语言

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java 和 C# 之间的异同点,目的在于当迁移到 .NET 时,让 Java 开发人员掌握所涉及的一些知识

来源:Microsoft.com 2007年10月28日

关键字: C# java Linux

  • 评论
  • 分享微博
  • 分享邮件

值类型和引用类型

C# 支持两种变量类型:

  • 值类型 — 这些是内置的基本数据类型,例如 char、int、float 和用 struct 声明的用户定义类型。

  • 引用类型 — 从基本类型构造而来的类和其他复杂数据类型。这种类型的变量并不包含类型的实例,而只是包含对实例的引用

让我们略微深入地研究一下这个问题。如果我们创建两个值类型变量 i 和 j,比如:

int i = 10;
int j = 20;

csharpforjava_fig01

图 1:值类型的内存位置

则 i 和 j 彼此完全独立,并且分配了不同的内存位置:

如果我们改变这些变量中的某一个的值,另一个自然不会受到影响。例如,如果我们有一个这样的表达式:

int k = i;

则变量之间仍然没有联系。也就是说,之后如果我们改变 i 的值,k 还会保留赋值时 i 具有的值。

然而,引用类型的做法却不同。例如,我们可以这样声明两个变量:

myClass a = new myClass();
myClass b = a;

现在,因为类是 C# 中的引用类型,所以 a 称为对 myClass 的引用。上面两行中的第一行在内存中创建了 myClass 的一个实例,并且将 a 设置为引用该实例。因此,当我们将 b 设置为等于 a 时,它就包含了对内存中类的引用的重复。如果我们现在改变 b 中的属性,a 中的属性就将反映这些改变,因为这两者都指向内存中的相同对象,如下图所示:

csharpforjava_fig02

图 2:引用类型的内存位置
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章