c# - 通过复制或引用传递?

标签 c# pass-by-reference pass-by-value

我对 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/

相关文章:

C++ 函数取值,它们应该取引用

ms-access - VBA:按值传递给属性调用

java - 为什么 Java 的行为不像 "Pass-By-Value"一样?

c# - ViewBag 空空如也

c# - 在 lambda foreach 中实例化一个类并调用方法

arrays - 如何在 swift 函数中返回一个 inout(引用)?

flutter - Flutter:将另一个类的BuildContext设置为null

C# & SQL Server : how to Insert DBNull. 如果字符串值为空,命令参数中的值?

c# - 如何通过 C# 动态选择和连接到 Oracle(Dev Vs Test Vs Production Server)

c++ - 可以通过引用将方法从类传递到全局函数或在类之间传递吗?