在C#中通过引用传输小字符串或大字符串会更好吗?我假设按值传输会强制运行时创建输入字符串的克隆,因此速度较慢。是否建议所有字符串函数都通过引用传输值?
答案 0 :(得分:11)
我假设按值传输会强制运行时创建输入字符串的克隆,因此速度较慢。
您的假设不正确。 String是一种引用类型 - 使用字符串参数调用方法只是按值复制引用。没有涉及克隆。它是固定大小 - 4或8个字节,具体取决于您使用的CLR。
(即使它是一个值类型,它也必须基本上包含对其他内容的引用 - 在栈上直接分配可变大小值类型是没有意义的。将分配多少空间对于变量?如果将变量的值更改为更短或更长的字符串会发生什么?)