问题标签 [reference-type]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
4517 浏览

c# - 值类型优于引用类型?

看到值类型的新实例在每次作为参数传递时都会创建,我开始考虑使用reforout关键字可以显着提高性能的场景。

过了一会儿,我突然想到,虽然我看到使用值类型的不足之处,但我不知道有什么好处。
所以我的问题相当直截了当——拥有值类型的目的是什么?通过复制结构而不是仅仅创建对它的新引用,我们可以获得什么?

在我看来,只有像 Java 这样的引用类型会容易得多。

编辑:为了澄清这一点,我指的不是小于 8 字节(引用的最大大小)的值类型,而是 8 字节或更多的值类型。

例如 -Rectangle包含四个int值的结构。

0 投票
4 回答
403 浏览

c# - 表现得像值类型的字符串

我刚刚编写了一个函数,但我不明白为什么会得到我的结果:

当我调用这个函数时 originalValue 没有更新。我的理解是字符串是一个类,因此它是一个引用类型,因此我传入的值应该更新。你能解释为什么不是吗?

0 投票
4 回答
6187 浏览

java - 为什么超类对象不能在 Java 中隐式转换为子类对象?

我有以下代码:

根据Java规则:

情况1:

案例二:

根据 Java 规则,案例 1 可以案例 2不可以。为什么案例 2不行?这条线((B)a).fB();实际上做了什么(我的意思是里面发生了什么)?

0 投票
2 回答
675 浏览

.net - 为什么值类型在栈上创建,引用类型在堆上创建?

编程语言书籍通常说明值类型是在栈上创建的,而引用类型是在堆上创建的。

我的问题是为什么。

0 投票
5 回答
5602 浏览

c# - 在 C# 中引用另一个字符串

据我所知,C# 中的字符串是引用类型。

所以在下面的代码中'a'应该等于“Hi”,但它仍然保持它的值“Hello”。为什么?

0 投票
1 回答
84 浏览

c# - 使用值类型作为参数时的内存位置方式是什么

我知道值类型和引用类型之间的一般区别,我也知道在引用类型中使用值类型时,这个值类型实际上是在堆上的。

前任:

什么时候

date1 在堆上

我的问题是

如果我们在方法中使用这个 date1 作为参数,那么内存位置行为是什么?

调用方法

选项 1:仅复制一个 date1 引用选项 2:或复制 date1 数据以运行

更新:在阅读了“关于值类型的真相”之后,我意识到我的假设存在一些不确定性。至少我应该给出一个上下文。“在桌面 CLR 上的 C# 的 Microsoft 实现中,当值是局部变量或临时值,不是 lambda 或匿名方法的封闭局部变量,并且方法体不是时,值类型存储在堆栈中一个迭代器块,并且抖动选择不注册该值。”

Update2:我问这个的原因是我想了解http://marcgravell.blogspot.co.uk/2011/10/assault-by-gc.html上的一些代码片段

将 Customer 从一个类更改为一个结构(仅在这个疯狂的代码中)

将主商店从 List 更改为 Customer[]

将子集从 List 更改为 List,特别是主 Customer[] 的偏移量

0 投票
3 回答
147 浏览

c# - 哪个性能更高,将方法传递给整个对象,还是传递该对象的属性?

考虑以下示例。

我需要检查 CouponModel 是否具有唯一的序列号。

我有两个选择:

当然,在我传入整个对象的方法中,我必须访问字符串属性,而不是直接使用字符串。

哪个选项更好,为什么?

0 投票
3 回答
1567 浏览

c# - 值类型何时会包含引用类型?

我知道在引用类型上使用值类型的决定应该基于语义,而不是性能。我不明白为什么值类型可以合法地包含引用类型成员?这有几个原因:

一方面,我们不应该构建一个需要构造函数的结构。

其次,由于值类型语义:

编译器不允许我Person在声明时进行初始化。我必须把它移到构造函数,依赖调用者,或者期待一个NullReferenceException. 这些情况都不是理想的。

.NET Framework 是否有值类型中的引用类型示例?我们什么时候应该这样做(如果有的话)?

0 投票
2 回答
335 浏览

c# - 为什么 Object.Equals(new Object(), new Object()) 是假的?

为什么是下面这段代码false

0 投票
3 回答
183 浏览

c# - c#中的int是什么?

intC# 中有什么?它是关键字,还是从system.ValueTypes派生的类?如果它是关键字,那么以下行如何编译

如果int是一个类,那么为什么不需要总是用 初始化它new?以下行如何编译?