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