我对 C# 有点陌生,只是想知道是否有默认情况下作为副本传递的类(常用)列表。我如何识别它们?
我知道基本的基本对象类型——int、uint、float、strings……——是通过复制传递的。
最佳答案
在 C#/.Net 中,对象可以分为值类型或引用类型 [1]。值类型是派生自 System.ValueType
并在 C# 中使用 struct
类型声明定义的任何类型。这些通过副本/值传递。
引用类型不是从 System.ValueType
派生的类型,在 C# 中使用 class
关键字定义。引用类型实例的标识符称为引用(类似于指针)。默认情况下,这些也是按值传递的,但仅传递引用而不传递整个对象。
您的问题还提到 string
实例是通过副本传递的。 .Net 中的 String
是引用类型(直接派生自 System.Object
),因此不会通过完整副本传递。
[1] 指针在这里可能有其自己的类别,但我在本次讨论中忽略了它们。
关于c# - 通过复制或引用传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3554791/