在C#中,哈希表默认是通过引用传递还是通过值传递?

在C#中,哈希表默认是通过引用传递还是通过值传递?,c#,hashtable,C#,Hashtable,我想知道默认情况下是通过引用传递哈希表还是通过值传递哈希表?在C#中,所有参数都是通过值传递的。但是HashTable是一种引用类型,因此传递的值是对实际HashTable的引用,如果这有意义的话 因此,这意味着当您将哈希表作为参数传递时,它不会被复制,但如果您试图像这样覆盖参数值: private void SomeMethod(HashTable ht) { ... ht = new HashTable(); ... } 然后它将不起作用,因为您正在覆盖value参数,而

我想知道默认情况下是通过引用传递哈希表还是通过值传递哈希表?

在C#中,所有参数都是通过值传递的。但是
HashTable
是一种引用类型,因此传递的值是对实际
HashTable
的引用,如果这有意义的话

因此,这意味着当您将哈希表作为参数传递时,它不会被复制,但如果您试图像这样覆盖参数值:

private void SomeMethod(HashTable ht)
{
   ...
   ht = new HashTable();
   ...
}

然后它将不起作用,因为您正在覆盖value参数,而不是实际的
哈希表

对该哈希表的引用是按值传递的(除非您指定
ref
)。

函数的参数是按值传递的,除非另有规定(ref和out)。您还可以查看Jon Skeets所说的内容