问题标签 [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 投票
9 回答
1800 浏览

c# - C# 支持值类型和引用类型,但它们都是对象吗?

我知道 C# 既有值类型又有引用类型,但你怎么能这样做:

如果 age 是一个值类型,它怎么会有一个 ToString 方法呢?它是否仅在内部需要时才转换为对象?

0 投票
3 回答
715 浏览

web-services - 如何在 Web 服务之间传递引用类型?

我在 web 服务之间传递引用类型时遇到了一些困难。

我的设置如下。

我有一个引用两个 Web 服务的控制台应用程序:

  1. 网络服务一
  2. 网络服务二

WebServiceOne 声明了我在控制台应用程序中使用的类的详细信息……我们称之为 MyClass。

我的控制台应用程序调用 WebServiceOne 来检索 MyClass 的列表。

然后它将每个 MyClass 发送到 WebServiceTwo 进行处理。

在包含 WebServiceTwo 的项目中,有一个对 WebServiceOne 的引用,这样我就可以拥有 MyClass 的声明。

我遇到的麻烦是,当我编译时,似乎无法确定从控制台应用程序传递的 MyClass 是否与在 WebServiceTwo 中引用的 WebServiceOne 中声明的 MyClass 相同。

我基本上得到一个错误,说 Console.WebServiceOne.MyClass 与 MyProject.WebServiceOne.MyClass 不同。

有谁知道这样做是否可行?也许我错误地引用了 WebServiceOne?知道我可能做错了什么吗?

我唯一的另一个选择是将引用类型的每个属性作为值类型直接传递给 WebServiceTwo ......但我想避免这种情况,因为我最终会传递 10-15 个参数。

任何帮助,将不胜感激!

0 投票
2 回答
1891 浏览

c# - Cloning a C# Reference Type to a Derived Reference Type

Coming from a C++ background, I am finding cloning of objects in C# a little hard to get used to. To clear up some of my confusion, I am looking for an elegant way to clone an object of a base type to a derived type.

To illustrate:

And with that I want to create an instance of "Derived" whilst doing a memberwise copy of the Base object - preferably without assigning them manually.

Note: Maybe this would be more suited to a value type?

0 投票
3 回答
19780 浏览

c# - 在泛型接口中实现可空类型

因此,在上一个问题中,我询问了有关使用公共类和宾果游戏实现通用接口的问题,它可以工作。但是,我希望传入的类型之一是内置的可为空类型之一,例如:int、Guid、String 等。

这是我的界面:

所以当我这样实现时:

我收到错误消息:类型“int”必须是引用类型才能将其用作泛型类型或方法“TestApp.IOurTemplate”中的参数“U”

我试图推断类型 Int32?,但同样的错误。有任何想法吗?

0 投票
3 回答
221 浏览

clr - CLR 上的引用大小是多少

我(纯粹出于好奇)试图找出在堆栈上进行分配时实际引用的大小。

读完后仍然不知道(这仅针对值类型或类型定义回答),而且我似乎仍然无法在任何地方找到它。

所以基本上想象一个类如下

现在,当实例化 A 类型的对象时,对字符串对象的引用将存储在堆栈中,那么堆栈上的分配大小是多少?

免责声明:如果我说的是完整的废话,请告诉我:)

0 投票
1 回答
345 浏览

.net - 排序引用类型与值类型的性能

我们试图在 .NET 中对 FileInfo 对象的集合进行排序。我们实现了 IComparer 以确保 FileInfo 对象根据我们的标准进行排序。然后我们注意到对 FileInfo 对象进行排序的性能比整数要慢很多倍。凭直觉(并记住引用在 C 中是如何工作的),我们能够通过使用局部变量来限制我们引用 FileInfo 属性的次数来提高性能。

我的想法是访问局部变量比访问对象上的属性更快。我认为这在非​​托管代码的世界中是有意义的,在那里我实际上可以想象堆栈是如何工作的以及如何引用值。但是,我知道托管代码的世界在幕后可能会更加复杂。我的问题是:这些非托管代码中的内存管理和程序流程的基本思想可以普遍地投射到托管代码的世界中吗?

最终在 KeeperOfTheSoul 的帮助下,我们能够追踪到我们是如何模拟 FileInfo 对象的。出于这个原因,我在这个问题中添加了一个 RhinoMock 标签。

0 投票
8 回答
22921 浏览

c# - C#,将一个 bool 复制到另一个(通过 ref,而不是 val)

我在这里的一堵砖墙上。是否可以将一个布尔值复制到另一个布尔值。考虑这段代码。. .

b 现在是一个完全独立的布尔值,值为 false。如果我随后更改 a,它将对 b 没有影响。是否可以通过 ref 使 a = b?我该怎么做?

非常感谢

0 投票
8 回答
539 浏览

c# - C# 教学参考资料

几周后,作为第一年编程课程的一部分,我将向一年级工程师教授 C# 中引用的要点。他们中的大多数人以前从未编程过,并且在学习对象方面遇到了很多麻烦,因此教授参考资料将是一场艰苦的战斗。我计划提供很多示例供学生自己完成,但是如果基本概念没有“点击”,那么仅仅展示一堆示例往往会让人不知所措。

因此,我将向 SO 社区提出问题:您看到参考资料教授的最佳方式是什么?是什么让它为您“点击”?我是否缺少任何与参考相关的材料?

我的初步教学计划是:

  1. 什么是参考(使用像 Eric Lippert's 这样的论点
  2. 参考资料和垃圾收集器
  3. 引用类型和值类型
  4. 不可变类型
  5. 按引用传递与按值传递(以及对象引用的所有微妙之处都按值传递)
  6. 如果您不理解 1-5,会产生意想不到的结果的一些令人讨厌的示例。
0 投票
2 回答
519 浏览

.net - typeof(System.Enum).IsClass == false

创立:

System.Enum也变得奇怪了.IsValueType == false,但是 Reflector 表明它真的只是一个abstract class.

System.Enum是一个引用类型,如 aSystem.ValueType和将枚举值转换为System.Enum引用引起的装箱/拆箱。这里没有惊喜。

Type但是,阶级不讲自然真相的理由是什么System.Enum?类型的反射行为没有什么特别之处,System.Enum使它看起来不是引用类型。

0 投票
6 回答
16781 浏览

c# - ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?

C# 不允许结构派生自类,但所有 ValueTypes 都派生自 Object。这种区别在哪里?

CLR 如何处理这个问题?