问题标签 [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 回答
4091 浏览

c# - 关于 .Net 中通用字典中的引用类型键的快速问题

我有一个可变类,用作通用字典的键。只有当它们的引用相等时,两个键才应该相等。根据我的阅读,在这种情况下,我不需要重写 Equals、GetHashCode 或实现 IEqualityComparer。

这个对吗?

0 投票
11 回答
16957 浏览

java - 在 Java 中何时使用原始类型以及何时使用引用类型

在哪种情况下应该使用原始类型(int)或引用类型(Integer)?

这个问题激发了我的好奇心。

0 投票
3 回答
2283 浏览

.net - 引用类型中定义的值类型存储在哪里(堆或堆栈)?

在引用类型中定义的值类型是存储在堆上还是堆栈上?

  1. 如果存储在堆中,那么值类型何时存储在堆栈中?
  2. 如果存储在堆栈中,那么堆内部的内容是什么,因为所有内容最终都以值类型结束?
0 投票
1 回答
269 浏览

.net - 从哪里可以获得 CTS 层次结构?接口类型在 CTS 层次结构中的位置

它说基本上有两种类型 1)值类型和引用类型。所有值类型都来自 system.valuetype

  1. 有什么类似的吗system.referencetype,因为我看到的每个 CTS 层次结构都显示以下两种类型system.objects,aValuetype和 a Referencetype。我的理解是从 system.objects 派生的所有类型,除了system.valuetype参考。这个对吗 ?

  2. 接口类型在层次结构中的位置。有些图表是独立显示的,但在某些图表中属于参考类型。

  3. 从哪里可以获得实际的 CTS 层次图?

0 投票
4 回答
908 浏览

c# - 引用和值类型方案

我一直在尝试彻底理解 Reference 和 Value 类型。就在我以为我有它的时候,我遇到了这个场景......

我创建了一个包含单个对象的类。

当我创建此 Container 类的实例时 (a) 我正在创建引用类型的实例。我为类中的对象分配了一个整数。据我所知,这将被装箱为一个对象,另一种引用类型。

我创建了 Container 类 (b) 的另一个实例,但是将第一个容器的值分配给它,b 的值现在是对 a 的引用。

正如预期的那样,当我打印出 aA 和 bA 的值时,它们是相同的。

而且,正如预期的那样,当我更改 aA 的值时,bA 的值也会因为它们引用同一个对象而发生变化。

现在我决定尝试使用单个本地对象。同样,我将整数装箱到第一个对象中,并将第一个对象的值分配给第二个对象。我相信此时的对象应该是引用类型,因此 c 和 d 应该引用同一个对象。在不更改任何内容的情况下,它们返回相同的值。

和以前一样,在更改初始对象的值时,我希望两个对象的值相同。

当我打印这两个对象的结果时, d 的值不会像以前那样改变。

有人可以解释为什么在这种情况下的分配与以前的不同吗?

谢谢

0 投票
8 回答
25315 浏览

c# - c# 只读对象

有没有办法返回一个对象的只读实例?

是通过返回 Clone() 来做到这一点的唯一方法,以便对 Clone 而不是对原始版本进行任何更改?我知道对于数组,有一个函数可以将数组作为只读返回。哦,我知道这是一个引用类型......我还想知道是否有一些隐藏的 C# 功能来锁定写作部分。

我试图想出一个通用的只读包装类,但无法弄清楚如何在不做一些昂贵的反射等的情况下将属性设为只读。

哦,我真的想避免创建所有只读属性的类的第二个版本。到时候,我还不如归还克隆人。

0 投票
3 回答
8205 浏览

c# - 为什么字符串是引用类型?

为什么字符串是引用类型,即使它通常是原始数据类型,例如 int、float 或 double。

0 投票
1 回答
78 浏览

c# - 加载的实体没有被传回

这可能是一个完整的新手错误。

我的 deepload 正在加载我的相关实体,并且正确填充了 T Entity,但是当我返回原始调用时,它没有保留更新?

现在我确定 EntityObjects 是引用类型(愚蠢的问题,但我在这里怀疑自己)

所以我不应该把它传回去。

这是我的沉重负担:

包括指点和大笑在内的任何帮助除外:)

0 投票
9 回答
8697 浏览

c# - 在 C# 中,是否有一种干净的方法来检查多个级别的空引用

例如,如果我想调用以下内容: person.Head.Nose.Sniff() 那么,如果我想安全,我必须执行以下操作:

有没有更简单的方法来表达这个表达式?

0 投票
1 回答
11024 浏览

c# - 是否可以创建一个接受(可为空)值类型和引用类型的 C# 泛型方法?

我想创建一个同时接受值类型引用类型参数的简单方法,即 int 是值,字符串是引用。

所以这就是我的开始:

所以我希望能够像这样使用它:

但我遇到的第一个问题是

类型“T”必须是不可为空的值类型,才能将其用作泛型类型或方法“System.Nullable”中的参数“T”

为了继续,我在我的方法中添加了一个结构约束

但现在该方法将不接受基于字符串的调用,并给我这个错误:

类型“字符串”必须是不可为空的值类型,才能将其用作泛型类型或方法中的参数“T”。

这可能吗?或者为什么我们被阻止这样做?